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." ^0Python (deterministic transpilation)
pythonannual_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)
textlast 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