<!-- canonical: efficientnewlanguage.org/ai/examples/901-the-deaths-were-divided-by-todays-cases | ai_layer_version: 0.1.0 | updated: 2026-09-18 -->

# Example 901 — The deaths were divided by todays cases

`the_deaths_were_divided_by_todays_cases.eml` - A dashboard reports the fatality rate as today's deaths divided by today's cases, both counts are exact, and during a fast-growing outbreak the rate reads a reassuring half a percent. Which cases today's deaths came from is computed below.

## EML

```eml
# Self-authored for the EML case corpus (no external origin). A dashboard
# reports the fatality rate as today's deaths divided by today's cases, both
# counts are exact, and during a fast-growing outbreak the rate reads a
# reassuring half a percent. Which cases today's deaths came from is computed
# below.
#
# The rate is careful. Both counts are real and current; the division is exact;
# it is recomputed every day from fresh data; and the intent is exactly 'what
# share of cases die'.
#
# A death today follows a case from two weeks ago, and two weeks ago there were
# a quarter as many cases, so dividing today's deaths by today's cases divides
# by a denominator four times too large.

8000 => cases_today
2000 => cases_two_weeks_ago
40 => deaths_today
2 => true_fatality_percent

int(deaths_today * 10000 / cases_today) => rate_on_todays_cases_per_myriad
int(deaths_today * 10000 / cases_two_weeks_ago) => rate_on_the_cases_that_died_per_myriad
int(cases_today / cases_two_weeks_ago) => growth_over_the_lag
int(rate_on_the_cases_that_died_per_myriad / rate_on_todays_cases_per_myriad) => understatement_factor

"cases today                     : " + str(cases_today) ^0
"cases two weeks ago             : " + str(cases_two_weeks_ago) ^0
"deaths today                    : " + str(deaths_today) ^0
"growth over the two-week lag    : " + str(growth_over_the_lag) + " times" ^0
"" ^0
"rate, deaths over today's cases : " + str(rate_on_todays_cases_per_myriad) + " per ten thousand" ^0
"rate, deaths over the cases they came from : " + str(rate_on_the_cases_that_died_per_myriad) + " per ten thousand" ^0
"true fatality                   : " + str(true_fatality_percent) + " percent" ^0
"understated by                  : a factor of " + str(understatement_factor) ^0
"" ^0

# ---- what the rate verified ----

"the dashboard rate" ^0
"  counts : real and current, both" ^0
"  division : exact" ^0
"  refresh : every day, fresh data" ^0
"  intent : what share of cases die" ^0
"  stale numbers used : 0" ^0
"  verdict : HALF A PERCENT OF CASES DIE" ^0
"" ^0
"  dividing exact current deaths by exact current cases is" ^0
"  the part done right here, and it is why the number is" ^0
"  precisely today's deaths per today's case" ^0
"" ^0

# ---- which cases the deaths came from ----

"the lag between the numerator and the denominator" ^0
"  a death today : follows a case from about two weeks ago" ^0
"  cases two weeks ago : " + str(cases_two_weeks_ago) ^0
"  cases today : " + str(cases_today) + ", " + str(growth_over_the_lag) + " times more" ^0
"  so today's deaths over today's cases : divides the deaths" ^0
"    of " + str(cases_two_weeks_ago) + " cases by " + str(cases_today) ^0
"  during growth : the denominator always outruns the" ^0
"    numerator by the growth over the lag" ^0
"" ^0

# ---- what the public got ----

"the reassurance" ^0
"  fatality shown : " + str(rate_on_todays_cases_per_myriad) + " per ten thousand" ^0
"  fatality of the cases that actually died : " + str(rate_on_the_cases_that_died_per_myriad) + " per ten thousand" ^0
"  is either count wrong : no" ^0
"  are the two counts about the same people : no; the deaths" ^0
"    are two weeks behind the cases" ^0
"  and when growth stops : the rate will appear to quadruple" ^0
"    with no change in the disease" ^0
"" ^0

# ---- null control ----

# The same rate computed with deaths divided by the cases from the lag ago (or
# by cases whose outcome is known), aligning numerator and denominator.
50 => nc_rate_on_todays_cases_per_myriad
200 => nc_rate_on_lagged_cases_per_myriad
150 => nc_per_myriad_the_alignment_recovers

"null control - divide by the cases the deaths came from" ^0
"  rate on today's cases : " + str(nc_rate_on_todays_cases_per_myriad) + " per ten thousand" ^0
"  rate on lagged cases : " + str(nc_rate_on_lagged_cases_per_myriad) + " per ten thousand" ^0
"  per ten thousand the alignment recovers : " + str(nc_per_myriad_the_alignment_recovers) ^0
"  no death and no case changed; the numerator and the" ^0
"  denominator stopped being two weeks apart" ^0
"" ^0

# ---- the rule ----

"what a deaths-over-cases-today rate guarantees" ^0
"  the ratio of today's two counts is exact : exactly, real" ^0
"    counts, exact division" ^0
"  the ratio is the share of cases that die : not addressed;" ^0
"    deaths lag cases by two weeks and cases grew " + str(growth_over_the_lag) + " times over" ^0
"    that lag, so " + str(rate_on_the_cases_that_died_per_myriad) + " per ten thousand reads as " + str(rate_on_todays_cases_per_myriad) ^0
"" ^0

"a ratio is a claim that its two numbers are about the same thing; when one" ^0
"lags the other in a quantity that is growing, the fresh denominator is always" ^0
"larger than the one the numerator belongs to, and the rate is diluted by" ^0
"exactly the growth" ^0
"" ^0

"It divides exact current deaths by exact current cases - " + str(rate_on_todays_cases_per_myriad) + " per ten thousand" ^0
"is exactly today over today. But the deaths follow cases from two weeks ago," ^0
"when there were " + str(growth_over_the_lag) + " times fewer, so the fatality of the cases that died is " + str(rate_on_the_cases_that_died_per_myriad) + "," ^0
"understated " + str(understatement_factor) + "-fold, until the numerator and denominator are aligned." ^0
```

## Python (deterministic transpilation)

```python
cases_today = 8000
cases_two_weeks_ago = 2000
deaths_today = 40
true_fatality_percent = 2
rate_on_todays_cases_per_myriad = int(deaths_today * 10000 / cases_today)
rate_on_the_cases_that_died_per_myriad = int(deaths_today * 10000 / cases_two_weeks_ago)
growth_over_the_lag = int(cases_today / cases_two_weeks_ago)
understatement_factor = int(rate_on_the_cases_that_died_per_myriad / rate_on_todays_cases_per_myriad)
print("cases today                     : " + str(cases_today))
print("cases two weeks ago             : " + str(cases_two_weeks_ago))
print("deaths today                    : " + str(deaths_today))
print("growth over the two-week lag    : " + str(growth_over_the_lag) + " times")
print("")
print("rate, deaths over today's cases : " + str(rate_on_todays_cases_per_myriad) + " per ten thousand")
print("rate, deaths over the cases they came from : " + str(rate_on_the_cases_that_died_per_myriad) + " per ten thousand")
print("true fatality                   : " + str(true_fatality_percent) + " percent")
print("understated by                  : a factor of " + str(understatement_factor))
print("")
print("the dashboard rate")
print("  counts : real and current, both")
print("  division : exact")
print("  refresh : every day, fresh data")
print("  intent : what share of cases die")
print("  stale numbers used : 0")
print("  verdict : HALF A PERCENT OF CASES DIE")
print("")
print("  dividing exact current deaths by exact current cases is")
print("  the part done right here, and it is why the number is")
print("  precisely today's deaths per today's case")
print("")
print("the lag between the numerator and the denominator")
print("  a death today : follows a case from about two weeks ago")
print("  cases two weeks ago : " + str(cases_two_weeks_ago))
print("  cases today : " + str(cases_today) + ", " + str(growth_over_the_lag) + " times more")
print("  so today's deaths over today's cases : divides the deaths")
print("    of " + str(cases_two_weeks_ago) + " cases by " + str(cases_today))
print("  during growth : the denominator always outruns the")
print("    numerator by the growth over the lag")
print("")
print("the reassurance")
print("  fatality shown : " + str(rate_on_todays_cases_per_myriad) + " per ten thousand")
print("  fatality of the cases that actually died : " + str(rate_on_the_cases_that_died_per_myriad) + " per ten thousand")
print("  is either count wrong : no")
print("  are the two counts about the same people : no; the deaths")
print("    are two weeks behind the cases")
print("  and when growth stops : the rate will appear to quadruple")
print("    with no change in the disease")
print("")
nc_rate_on_todays_cases_per_myriad = 50
nc_rate_on_lagged_cases_per_myriad = 200
nc_per_myriad_the_alignment_recovers = 150
print("null control - divide by the cases the deaths came from")
print("  rate on today's cases : " + str(nc_rate_on_todays_cases_per_myriad) + " per ten thousand")
print("  rate on lagged cases : " + str(nc_rate_on_lagged_cases_per_myriad) + " per ten thousand")
print("  per ten thousand the alignment recovers : " + str(nc_per_myriad_the_alignment_recovers))
print("  no death and no case changed; the numerator and the")
print("  denominator stopped being two weeks apart")
print("")
print("what a deaths-over-cases-today rate guarantees")
print("  the ratio of today's two counts is exact : exactly, real")
print("    counts, exact division")
print("  the ratio is the share of cases that die : not addressed;")
print("    deaths lag cases by two weeks and cases grew " + str(growth_over_the_lag) + " times over")
print("    that lag, so " + str(rate_on_the_cases_that_died_per_myriad) + " per ten thousand reads as " + str(rate_on_todays_cases_per_myriad))
print("")
print("a ratio is a claim that its two numbers are about the same thing; when one")
print("lags the other in a quantity that is growing, the fresh denominator is always")
print("larger than the one the numerator belongs to, and the rate is diluted by")
print("exactly the growth")
print("")
print("It divides exact current deaths by exact current cases - " + str(rate_on_todays_cases_per_myriad) + " per ten thousand")
print("is exactly today over today. But the deaths follow cases from two weeks ago,")
print("when there were " + str(growth_over_the_lag) + " times fewer, so the fatality of the cases that died is " + str(rate_on_the_cases_that_died_per_myriad) + ",")
print("understated " + str(understatement_factor) + "-fold, until the numerator and denominator are aligned.")
```

## stdout (executed)

```text
cases today                     : 8000
cases two weeks ago             : 2000
deaths today                    : 40
growth over the two-week lag    : 4 times

rate, deaths over today's cases : 50 per ten thousand
rate, deaths over the cases they came from : 200 per ten thousand
true fatality                   : 2 percent
understated by                  : a factor of 4

the dashboard rate
  counts : real and current, both
  division : exact
  refresh : every day, fresh data
  intent : what share of cases die
  stale numbers used : 0
  verdict : HALF A PERCENT OF CASES DIE

  dividing exact current deaths by exact current cases is
  the part done right here, and it is why the number is
  precisely today's deaths per today's case

the lag between the numerator and the denominator
  a death today : follows a case from about two weeks ago
  cases two weeks ago : 2000
  cases today : 8000, 4 times more
  so today's deaths over today's cases : divides the deaths
    of 2000 cases by 8000
  during growth : the denominator always outruns the
    numerator by the growth over the lag

the reassurance
  fatality shown : 50 per ten thousand
  fatality of the cases that actually died : 200 per ten thousand
  is either count wrong : no
  are the two counts about the same people : no; the deaths
    are two weeks behind the cases
  and when growth stops : the rate will appear to quadruple
    with no change in the disease

null control - divide by the cases the deaths came from
  rate on today's cases : 50 per ten thousand
  rate on lagged cases : 200 per ten thousand
  per ten thousand the alignment recovers : 150
  no death and no case changed; the numerator and the
  denominator stopped being two weeks apart

what a deaths-over-cases-today rate guarantees
  the ratio of today's two counts is exact : exactly, real
    counts, exact division
  the ratio is the share of cases that die : not addressed;
    deaths lag cases by two weeks and cases grew 4 times over
    that lag, so 200 per ten thousand reads as 50

a ratio is a claim that its two numbers are about the same thing; when one
lags the other in a quantity that is growing, the fresh denominator is always
larger than the one the numerator belongs to, and the rate is diluted by
exactly the growth

It divides exact current deaths by exact current cases - 50 per ten thousand
is exactly today over today. But the deaths follow cases from two weeks ago,
when there were 4 times fewer, so the fatality of the cases that died is 200,
understated 4-fold, until the numerator and denominator are aligned.
```

## Round-trip

`ok: true` — round-trip fixpoint reached (python1 == python2)

## Trace event types

eml:run:start · eml:assign · eml:output · eml:run:done
