Case 937

The return period was read as a schedule

the_return_period_was_read_as_a_schedule.eml - The hundred-year flood came in 1995, the town rebuilt, and the levee plan was deferred on the reasoning that the next one is not due until 2095. The 1995 flood is real and the return period is correctly stated. What the river remembers of 1995 is computed below.

ok: true — round-trip fixpoint reached (python1 == python2)updated 2026-09-20

EML

eml
# Self-authored for the EML case corpus (no external origin). The hundred-year
# flood came in 1995, the town rebuilt, and the levee plan was deferred on the
# reasoning that the next one is not due until 2095. The 1995 flood is real and
# the return period is correctly stated. What the river remembers of 1995 is
# computed below.
#
# The reasoning is careful. The 1995 flood really was a hundred-year event; the
# return period really is a hundred years; the arithmetic 1995 plus 100 is
# exact; and the intent is exactly 'when is the next one'.
#
# The river has no memory: a hundred-year flood is a one-percent chance in every
# year, the same one percent the year after a flood as after fifty dry years -
# so the chance in any coming year is one percent, and 'not due until 2095' is a
# chance of zero that does not exist.

100 => annual_chance_per_myriad
1995 => year_of_the_last_flood
100 => return_period_years
30 => years_of_the_deferred_plan

year_of_the_last_flood + return_period_years => year_the_plan_calls_next_due
annual_chance_per_myriad => chance_next_year_after_a_flood_per_myriad
annual_chance_per_myriad => chance_next_year_after_fifty_dry_years_per_myriad
chance_next_year_after_a_flood_per_myriad - chance_next_year_after_fifty_dry_years_per_myriad => memory_the_river_has
annual_chance_per_myriad * years_of_the_deferred_plan => expected_floods_during_the_deferral_per_myriad
0 => chance_the_plan_assumed_per_myriad
annual_chance_per_myriad - chance_the_plan_assumed_per_myriad => chance_the_plan_ignores_each_year_per_myriad

"last flood                      : " + str(year_of_the_last_flood) + ", a hundred-year event" ^0
"return period                   : " + str(return_period_years) + " years" ^0
"next one 'due'                  : " + str(year_the_plan_calls_next_due) + ", so the plan was deferred" ^0
"" ^0
"chance next year, after a flood : " + str(chance_next_year_after_a_flood_per_myriad) + " per ten thousand" ^0
"chance next year, after 50 dry years : " + str(chance_next_year_after_fifty_dry_years_per_myriad) + " per ten thousand" ^0
"memory the river has            : " + str(memory_the_river_has) ^0
"chance the plan assumed, each year : " + str(chance_the_plan_assumed_per_myriad) ^0
"chance ignored, each year       : " + str(chance_the_plan_ignores_each_year_per_myriad) + " per ten thousand" ^0
"expected floods during the " + str(years_of_the_deferred_plan) + "-year deferral : " + str(expected_floods_during_the_deferral_per_myriad) + " per ten thousand of a flood" ^0
"" ^0

# ---- what the reasoning verified ----

"the not-due-until-2095 reasoning" ^0
"  the 1995 flood : genuinely a hundred-year event" ^0
"  the return period : genuinely a hundred years" ^0
"  arithmetic : 1995 plus 100, exact" ^0
"  intent : when is the next one" ^0
"  facts wrong : 0" ^0
"  verdict : NEXT DUE IN 2095, DEFER THE LEVEE" ^0
"" ^0
"  getting the event and the return period right is the" ^0
"  part done right here, and it is why the one percent is a" ^0
"  true statement about the river" ^0
"" ^0

# ---- what the river remembers ----

"memorylessness" ^0
"  what the return period means : one percent per year" ^0
"  what it does not mean : one per hundred years, spaced" ^0
"  the year after a flood : one percent" ^0
"  the fiftieth dry year : one percent" ^0
"  so 1995 : tells the next year nothing about itself" ^0
"  the plan's 'due date' : a chance of zero for a century," ^0
"    which no year has" ^0
"" ^0

# ---- what the town got ----

"the deferral" ^0
"  chance assumed for each of the next " + str(years_of_the_deferred_plan) + " years : " + str(chance_the_plan_assumed_per_myriad) ^0
"  actual chance each year : " + str(annual_chance_per_myriad) + " per ten thousand" ^0
"  is the 1995 flood misclassified : no" ^0
"  is a return period a schedule : no; it is a rate, and a" ^0
"    rate does not reset when it pays out" ^0
"" ^0

# ---- null control ----

# The same plan made on the annual chance (the same one percent every year,
# flood or no flood), not on years since the last event.
0 => nc_chance_used_per_year_by_the_schedule_reading_per_myriad
100 => nc_chance_used_per_year_by_the_rate_reading_per_myriad
1 => nc_levee_plan_proceeds_under_the_rate_reading

"null control - plan on the rate, not on years-since" ^0
"  chance per year, schedule reading : " + str(nc_chance_used_per_year_by_the_schedule_reading_per_myriad) + " per ten thousand" ^0
"  chance per year, rate reading : " + str(nc_chance_used_per_year_by_the_rate_reading_per_myriad) + " per ten thousand" ^0
"  levee plan proceeds : " + str(nc_levee_plan_proceeds_under_the_rate_reading) ^0
"  no river and no record changed; the return period stopped" ^0
"  being read as a calendar" ^0
"" ^0

# ---- the rule ----

"what a correctly classified past flood guarantees" ^0
"  1995 was a one-in-a-hundred year : exactly, real event," ^0
"    real return period" ^0
"  the next one is a century away : not addressed; the" ^0
"    chance is " + str(annual_chance_per_myriad) + " per ten thousand in every year regardless of" ^0
"    1995, so the deferral carries " + str(expected_floods_during_the_deferral_per_myriad) + " per ten thousand of a flood" ^0
"" ^0

"a rate has no clock; the event that just happened does not spend down the" ^0
"chance of the next one, and a plan that reads 'one in a hundred years' as" ^0
"'one, then a hundred years' has given itself a century of safety the river" ^0
"never offered" ^0
"" ^0

"The 1995 flood was a hundred-year event and the return period is right. But" ^0
"the river is memoryless: the chance is " + str(annual_chance_per_myriad) + " per ten thousand next year whether" ^0
"the last flood was one year ago or fifty, so the " + str(years_of_the_deferred_plan) + "-year deferral ignores " + str(chance_the_plan_ignores_each_year_per_myriad) ^0
"per ten thousand every year - " + str(expected_floods_during_the_deferral_per_myriad) + " per ten thousand of a flood - until the plan reads the rate." ^0

Python (deterministic transpilation)

python
annual_chance_per_myriad = 100
year_of_the_last_flood = 1995
return_period_years = 100
years_of_the_deferred_plan = 30
year_the_plan_calls_next_due = year_of_the_last_flood + return_period_years
chance_next_year_after_a_flood_per_myriad = annual_chance_per_myriad
chance_next_year_after_fifty_dry_years_per_myriad = annual_chance_per_myriad
memory_the_river_has = chance_next_year_after_a_flood_per_myriad - chance_next_year_after_fifty_dry_years_per_myriad
expected_floods_during_the_deferral_per_myriad = annual_chance_per_myriad * years_of_the_deferred_plan
chance_the_plan_assumed_per_myriad = 0
chance_the_plan_ignores_each_year_per_myriad = annual_chance_per_myriad - chance_the_plan_assumed_per_myriad
print("last flood                      : " + str(year_of_the_last_flood) + ", a hundred-year event")
print("return period                   : " + str(return_period_years) + " years")
print("next one 'due'                  : " + str(year_the_plan_calls_next_due) + ", so the plan was deferred")
print("")
print("chance next year, after a flood : " + str(chance_next_year_after_a_flood_per_myriad) + " per ten thousand")
print("chance next year, after 50 dry years : " + str(chance_next_year_after_fifty_dry_years_per_myriad) + " per ten thousand")
print("memory the river has            : " + str(memory_the_river_has))
print("chance the plan assumed, each year : " + str(chance_the_plan_assumed_per_myriad))
print("chance ignored, each year       : " + str(chance_the_plan_ignores_each_year_per_myriad) + " per ten thousand")
print("expected floods during the " + str(years_of_the_deferred_plan) + "-year deferral : " + str(expected_floods_during_the_deferral_per_myriad) + " per ten thousand of a flood")
print("")
print("the not-due-until-2095 reasoning")
print("  the 1995 flood : genuinely a hundred-year event")
print("  the return period : genuinely a hundred years")
print("  arithmetic : 1995 plus 100, exact")
print("  intent : when is the next one")
print("  facts wrong : 0")
print("  verdict : NEXT DUE IN 2095, DEFER THE LEVEE")
print("")
print("  getting the event and the return period right is the")
print("  part done right here, and it is why the one percent is a")
print("  true statement about the river")
print("")
print("memorylessness")
print("  what the return period means : one percent per year")
print("  what it does not mean : one per hundred years, spaced")
print("  the year after a flood : one percent")
print("  the fiftieth dry year : one percent")
print("  so 1995 : tells the next year nothing about itself")
print("  the plan's 'due date' : a chance of zero for a century,")
print("    which no year has")
print("")
print("the deferral")
print("  chance assumed for each of the next " + str(years_of_the_deferred_plan) + " years : " + str(chance_the_plan_assumed_per_myriad))
print("  actual chance each year : " + str(annual_chance_per_myriad) + " per ten thousand")
print("  is the 1995 flood misclassified : no")
print("  is a return period a schedule : no; it is a rate, and a")
print("    rate does not reset when it pays out")
print("")
nc_chance_used_per_year_by_the_schedule_reading_per_myriad = 0
nc_chance_used_per_year_by_the_rate_reading_per_myriad = 100
nc_levee_plan_proceeds_under_the_rate_reading = 1
print("null control - plan on the rate, not on years-since")
print("  chance per year, schedule reading : " + str(nc_chance_used_per_year_by_the_schedule_reading_per_myriad) + " per ten thousand")
print("  chance per year, rate reading : " + str(nc_chance_used_per_year_by_the_rate_reading_per_myriad) + " per ten thousand")
print("  levee plan proceeds : " + str(nc_levee_plan_proceeds_under_the_rate_reading))
print("  no river and no record changed; the return period stopped")
print("  being read as a calendar")
print("")
print("what a correctly classified past flood guarantees")
print("  1995 was a one-in-a-hundred year : exactly, real event,")
print("    real return period")
print("  the next one is a century away : not addressed; the")
print("    chance is " + str(annual_chance_per_myriad) + " per ten thousand in every year regardless of")
print("    1995, so the deferral carries " + str(expected_floods_during_the_deferral_per_myriad) + " per ten thousand of a flood")
print("")
print("a rate has no clock; the event that just happened does not spend down the")
print("chance of the next one, and a plan that reads 'one in a hundred years' as")
print("'one, then a hundred years' has given itself a century of safety the river")
print("never offered")
print("")
print("The 1995 flood was a hundred-year event and the return period is right. But")
print("the river is memoryless: the chance is " + str(annual_chance_per_myriad) + " per ten thousand next year whether")
print("the last flood was one year ago or fifty, so the " + str(years_of_the_deferred_plan) + "-year deferral ignores " + str(chance_the_plan_ignores_each_year_per_myriad))
print("per ten thousand every year - " + str(expected_floods_during_the_deferral_per_myriad) + " per ten thousand of a flood - until the plan reads the rate.")

stdout (executed)

text
last flood                      : 1995, a hundred-year event
return period                   : 100 years
next one 'due'                  : 2095, so the plan was deferred

chance next year, after a flood : 100 per ten thousand
chance next year, after 50 dry years : 100 per ten thousand
memory the river has            : 0
chance the plan assumed, each year : 0
chance ignored, each year       : 100 per ten thousand
expected floods during the 30-year deferral : 3000 per ten thousand of a flood

the not-due-until-2095 reasoning
  the 1995 flood : genuinely a hundred-year event
  the return period : genuinely a hundred years
  arithmetic : 1995 plus 100, exact
  intent : when is the next one
  facts wrong : 0
  verdict : NEXT DUE IN 2095, DEFER THE LEVEE

  getting the event and the return period right is the
  part done right here, and it is why the one percent is a
  true statement about the river

memorylessness
  what the return period means : one percent per year
  what it does not mean : one per hundred years, spaced
  the year after a flood : one percent
  the fiftieth dry year : one percent
  so 1995 : tells the next year nothing about itself
  the plan's 'due date' : a chance of zero for a century,
    which no year has

the deferral
  chance assumed for each of the next 30 years : 0
  actual chance each year : 100 per ten thousand
  is the 1995 flood misclassified : no
  is a return period a schedule : no; it is a rate, and a
    rate does not reset when it pays out

null control - plan on the rate, not on years-since
  chance per year, schedule reading : 0 per ten thousand
  chance per year, rate reading : 100 per ten thousand
  levee plan proceeds : 1
  no river and no record changed; the return period stopped
  being read as a calendar

what a correctly classified past flood guarantees
  1995 was a one-in-a-hundred year : exactly, real event,
    real return period
  the next one is a century away : not addressed; the
    chance is 100 per ten thousand in every year regardless of
    1995, so the deferral carries 3000 per ten thousand of a flood

a rate has no clock; the event that just happened does not spend down the
chance of the next one, and a plan that reads 'one in a hundred years' as
'one, then a hundred years' has given itself a century of safety the river
never offered

The 1995 flood was a hundred-year event and the return period is right. But
the river is memoryless: the chance is 100 per ten thousand next year whether
the last flood was one year ago or fifty, so the 30-year deferral ignores 100
per ten thousand every year - 3000 per ten thousand of a flood - until the plan reads the rate.

Trace event types

eml:run:starteml:assigneml:outputeml:run:done