Case 957
Each heater was within the rating and together they were not
each_heater_was_within_the_rating_and_together_they_were_not.eml - A four-socket extension lead is rated at ten amps, two 1500-watt heaters are plugged into it, each heater draws well under the rating, and the lead's plug melts. What two loads on one lead draw together is computed below.
ok: true — round-trip fixpoint reached (python1 == python2)updated 2026-09-22
EML
eml# Self-authored for the EML case corpus (no external origin). A four-socket
# extension lead is rated at ten amps, two 1500-watt heaters are plugged into
# it, each heater draws well under the rating, and the lead's plug melts. What
# two loads on one lead draw together is computed below.
#
# The reasoning is careful. The lead's rating is real and was read off the
# label; each heater's draw was computed correctly from its wattage; each is
# genuinely under ten amps; and the intent was exactly 'stay within the rating'.
#
# Loads on one lead sit in parallel and their currents add, so two heaters at
# six and a half amps each put thirteen amps through one cord rated for ten -
# and the heat in that cord rises with the square of the current, so thirty
# percent over the rating is sixty-nine percent more heat in the conductor.
230 => supply_volts
1500 => heater_watts
2 => heaters_plugged_in
100 => lead_rating_tenths_of_an_amp
int(heater_watts * 10 / supply_volts) => one_heater_draw_tenths_of_an_amp
one_heater_draw_tenths_of_an_amp * heaters_plugged_in => both_heaters_draw_tenths_of_an_amp
lead_rating_tenths_of_an_amp - one_heater_draw_tenths_of_an_amp => one_heater_margin_under_the_rating_tenths
both_heaters_draw_tenths_of_an_amp - lead_rating_tenths_of_an_amp => both_heaters_over_the_rating_tenths
int(both_heaters_draw_tenths_of_an_amp * 100 / lead_rating_tenths_of_an_amp) => current_as_a_share_of_the_rating_per_hundred
int(both_heaters_draw_tenths_of_an_amp * both_heaters_draw_tenths_of_an_amp * 100 / (lead_rating_tenths_of_an_amp * lead_rating_tenths_of_an_amp)) => conductor_heat_as_a_share_of_the_rated_heat_per_hundred
conductor_heat_as_a_share_of_the_rated_heat_per_hundred - 100 => conductor_heat_over_the_rated_heat_percent
heater_watts * heaters_plugged_in => both_heaters_watts
int(lead_rating_tenths_of_an_amp * supply_volts / 10) => watts_the_rating_allows
"supply : " + str(supply_volts) + " V" ^0
"lead rating : " + str(lead_rating_tenths_of_an_amp) + " tenths of an amp, " + str(watts_the_rating_allows) + " W" ^0
"one heater : " + str(heater_watts) + " W, " + str(one_heater_draw_tenths_of_an_amp) + " tenths of an amp, " + str(one_heater_margin_under_the_rating_tenths) + " under the rating" ^0
"two heaters on the same lead : " + str(both_heaters_watts) + " W, " + str(both_heaters_draw_tenths_of_an_amp) + " tenths of an amp, " + str(both_heaters_over_the_rating_tenths) + " over the rating" ^0
"current vs rating : " + str(current_as_a_share_of_the_rating_per_hundred) + " per hundred" ^0
"heat in the conductor vs rated : " + str(conductor_heat_as_a_share_of_the_rated_heat_per_hundred) + " per hundred, " + str(conductor_heat_over_the_rated_heat_percent) + " percent more" ^0
"" ^0
# ---- what the user verified ----
"the each-within-rating reasoning" ^0
" rating : " + str(lead_rating_tenths_of_an_amp) + " tenths of an amp, read off the label" ^0
" heater draw : " + str(one_heater_draw_tenths_of_an_amp) + " tenths of an amp, computed from " + str(heater_watts) + " W" ^0
" comparison : each heater under the rating, with " + str(one_heater_margin_under_the_rating_tenths) + " to spare" ^0
" sockets : four, so two heaters fit" ^0
" intent : stay within the rating" ^0
" facts wrong : 0" ^0
" verdict : EACH HEATER IS WITHIN THE RATING" ^0
"" ^0
" computing each heater's draw from its wattage is the part" ^0
" done right here, and it is why the single-heater figure of" ^0
" " + str(one_heater_draw_tenths_of_an_amp) + " tenths is exactly right" ^0
"" ^0
# ---- what two loads on one lead draw ----
"parallel loads add" ^0
" what the sockets share : one cord, one plug, one pair of conductors" ^0
" what each heater draws : its own " + str(one_heater_draw_tenths_of_an_amp) + " tenths, regardless of the other" ^0
" what the cord carries : both, " + str(both_heaters_draw_tenths_of_an_amp) + " tenths, because every socket's" ^0
" current comes down the same wire" ^0
" what the rating limits : the cord's heat, which rises with" ^0
" the square of the current" ^0
" " + str(current_as_a_share_of_the_rating_per_hundred) + " per hundred of the current : " + str(conductor_heat_as_a_share_of_the_rated_heat_per_hundred) + " per hundred of the heat" ^0
"" ^0
# ---- what the user got ----
"the plug" ^0
" believed : two loads, each within the rating" ^0
" actual : one cord at " + str(both_heaters_draw_tenths_of_an_amp) + " tenths, " + str(conductor_heat_over_the_rated_heat_percent) + " percent more heat than it was" ^0
" built to shed" ^0
" is either heater over the rating : no" ^0
" is the rating per socket : no; it is per cord, and the cord" ^0
" carries the sum" ^0
"" ^0
# ---- null control ----
# The same two heaters with the second one on a different circuit instead of a
# second socket of the same lead.
130 => nc_cord_current_two_heaters_one_lead_tenths
65 => nc_cord_current_one_heater_per_lead_tenths
65 => nc_current_the_second_lead_takes_off_this_cord_tenths
"null control - one heater per cord" ^0
" cord current, two heaters on one lead : " + str(nc_cord_current_two_heaters_one_lead_tenths) + " tenths of an amp" ^0
" cord current, one heater per lead : " + str(nc_cord_current_one_heater_per_lead_tenths) + " tenths of an amp" ^0
" current the second cord takes off this one : " + str(nc_current_the_second_lead_takes_off_this_cord_tenths) + " tenths of an amp" ^0
" no heater and no rating changed; the loads stopped sharing" ^0
" a conductor" ^0
"" ^0
# ---- the rule ----
"what a per-heater check against the lead's rating guarantees" ^0
" each heater alone is within the rating : exactly, " + str(one_heater_draw_tenths_of_an_amp) + " under " + str(lead_rating_tenths_of_an_amp) ^0
" the lead is within its rating : not addressed; the sockets" ^0
" share one cord, the currents add to " + str(both_heaters_draw_tenths_of_an_amp) + " tenths, and the" ^0
" cord's heat is " + str(conductor_heat_as_a_share_of_the_rated_heat_per_hundred) + " per hundred of what the rating allows" ^0
"" ^0
"a rating on a cord is a promise about the cord, not about anything plugged" ^0
"into it; four sockets are four doors into one corridor, and the corridor is" ^0
"what burns" ^0
"" ^0
"Each heater draws " + str(one_heater_draw_tenths_of_an_amp) + " tenths of an amp, under the rating - that check was right." ^0
"But both come down one cord: " + str(both_heaters_draw_tenths_of_an_amp) + " tenths against a rating of " + str(lead_rating_tenths_of_an_amp) + ", and since" ^0
"heat goes with the square, " + str(current_as_a_share_of_the_rating_per_hundred) + " per hundred of the current is " + str(conductor_heat_as_a_share_of_the_rated_heat_per_hundred) + " per hundred of" ^0
"the heat, until the rating is checked against the sum the cord carries." ^0Python (deterministic transpilation)
pythonsupply_volts = 230
heater_watts = 1500
heaters_plugged_in = 2
lead_rating_tenths_of_an_amp = 100
one_heater_draw_tenths_of_an_amp = int(heater_watts * 10 / supply_volts)
both_heaters_draw_tenths_of_an_amp = one_heater_draw_tenths_of_an_amp * heaters_plugged_in
one_heater_margin_under_the_rating_tenths = lead_rating_tenths_of_an_amp - one_heater_draw_tenths_of_an_amp
both_heaters_over_the_rating_tenths = both_heaters_draw_tenths_of_an_amp - lead_rating_tenths_of_an_amp
current_as_a_share_of_the_rating_per_hundred = int(both_heaters_draw_tenths_of_an_amp * 100 / lead_rating_tenths_of_an_amp)
conductor_heat_as_a_share_of_the_rated_heat_per_hundred = int(both_heaters_draw_tenths_of_an_amp * both_heaters_draw_tenths_of_an_amp * 100 / (lead_rating_tenths_of_an_amp * lead_rating_tenths_of_an_amp))
conductor_heat_over_the_rated_heat_percent = conductor_heat_as_a_share_of_the_rated_heat_per_hundred - 100
both_heaters_watts = heater_watts * heaters_plugged_in
watts_the_rating_allows = int(lead_rating_tenths_of_an_amp * supply_volts / 10)
print("supply : " + str(supply_volts) + " V")
print("lead rating : " + str(lead_rating_tenths_of_an_amp) + " tenths of an amp, " + str(watts_the_rating_allows) + " W")
print("one heater : " + str(heater_watts) + " W, " + str(one_heater_draw_tenths_of_an_amp) + " tenths of an amp, " + str(one_heater_margin_under_the_rating_tenths) + " under the rating")
print("two heaters on the same lead : " + str(both_heaters_watts) + " W, " + str(both_heaters_draw_tenths_of_an_amp) + " tenths of an amp, " + str(both_heaters_over_the_rating_tenths) + " over the rating")
print("current vs rating : " + str(current_as_a_share_of_the_rating_per_hundred) + " per hundred")
print("heat in the conductor vs rated : " + str(conductor_heat_as_a_share_of_the_rated_heat_per_hundred) + " per hundred, " + str(conductor_heat_over_the_rated_heat_percent) + " percent more")
print("")
print("the each-within-rating reasoning")
print(" rating : " + str(lead_rating_tenths_of_an_amp) + " tenths of an amp, read off the label")
print(" heater draw : " + str(one_heater_draw_tenths_of_an_amp) + " tenths of an amp, computed from " + str(heater_watts) + " W")
print(" comparison : each heater under the rating, with " + str(one_heater_margin_under_the_rating_tenths) + " to spare")
print(" sockets : four, so two heaters fit")
print(" intent : stay within the rating")
print(" facts wrong : 0")
print(" verdict : EACH HEATER IS WITHIN THE RATING")
print("")
print(" computing each heater's draw from its wattage is the part")
print(" done right here, and it is why the single-heater figure of")
print(" " + str(one_heater_draw_tenths_of_an_amp) + " tenths is exactly right")
print("")
print("parallel loads add")
print(" what the sockets share : one cord, one plug, one pair of conductors")
print(" what each heater draws : its own " + str(one_heater_draw_tenths_of_an_amp) + " tenths, regardless of the other")
print(" what the cord carries : both, " + str(both_heaters_draw_tenths_of_an_amp) + " tenths, because every socket's")
print(" current comes down the same wire")
print(" what the rating limits : the cord's heat, which rises with")
print(" the square of the current")
print(" " + str(current_as_a_share_of_the_rating_per_hundred) + " per hundred of the current : " + str(conductor_heat_as_a_share_of_the_rated_heat_per_hundred) + " per hundred of the heat")
print("")
print("the plug")
print(" believed : two loads, each within the rating")
print(" actual : one cord at " + str(both_heaters_draw_tenths_of_an_amp) + " tenths, " + str(conductor_heat_over_the_rated_heat_percent) + " percent more heat than it was")
print(" built to shed")
print(" is either heater over the rating : no")
print(" is the rating per socket : no; it is per cord, and the cord")
print(" carries the sum")
print("")
nc_cord_current_two_heaters_one_lead_tenths = 130
nc_cord_current_one_heater_per_lead_tenths = 65
nc_current_the_second_lead_takes_off_this_cord_tenths = 65
print("null control - one heater per cord")
print(" cord current, two heaters on one lead : " + str(nc_cord_current_two_heaters_one_lead_tenths) + " tenths of an amp")
print(" cord current, one heater per lead : " + str(nc_cord_current_one_heater_per_lead_tenths) + " tenths of an amp")
print(" current the second cord takes off this one : " + str(nc_current_the_second_lead_takes_off_this_cord_tenths) + " tenths of an amp")
print(" no heater and no rating changed; the loads stopped sharing")
print(" a conductor")
print("")
print("what a per-heater check against the lead's rating guarantees")
print(" each heater alone is within the rating : exactly, " + str(one_heater_draw_tenths_of_an_amp) + " under " + str(lead_rating_tenths_of_an_amp))
print(" the lead is within its rating : not addressed; the sockets")
print(" share one cord, the currents add to " + str(both_heaters_draw_tenths_of_an_amp) + " tenths, and the")
print(" cord's heat is " + str(conductor_heat_as_a_share_of_the_rated_heat_per_hundred) + " per hundred of what the rating allows")
print("")
print("a rating on a cord is a promise about the cord, not about anything plugged")
print("into it; four sockets are four doors into one corridor, and the corridor is")
print("what burns")
print("")
print("Each heater draws " + str(one_heater_draw_tenths_of_an_amp) + " tenths of an amp, under the rating - that check was right.")
print("But both come down one cord: " + str(both_heaters_draw_tenths_of_an_amp) + " tenths against a rating of " + str(lead_rating_tenths_of_an_amp) + ", and since")
print("heat goes with the square, " + str(current_as_a_share_of_the_rating_per_hundred) + " per hundred of the current is " + str(conductor_heat_as_a_share_of_the_rated_heat_per_hundred) + " per hundred of")
print("the heat, until the rating is checked against the sum the cord carries.")stdout (executed)
textsupply : 230 V
lead rating : 100 tenths of an amp, 2300 W
one heater : 1500 W, 65 tenths of an amp, 35 under the rating
two heaters on the same lead : 3000 W, 130 tenths of an amp, 30 over the rating
current vs rating : 130 per hundred
heat in the conductor vs rated : 169 per hundred, 69 percent more
the each-within-rating reasoning
rating : 100 tenths of an amp, read off the label
heater draw : 65 tenths of an amp, computed from 1500 W
comparison : each heater under the rating, with 35 to spare
sockets : four, so two heaters fit
intent : stay within the rating
facts wrong : 0
verdict : EACH HEATER IS WITHIN THE RATING
computing each heater's draw from its wattage is the part
done right here, and it is why the single-heater figure of
65 tenths is exactly right
parallel loads add
what the sockets share : one cord, one plug, one pair of conductors
what each heater draws : its own 65 tenths, regardless of the other
what the cord carries : both, 130 tenths, because every socket's
current comes down the same wire
what the rating limits : the cord's heat, which rises with
the square of the current
130 per hundred of the current : 169 per hundred of the heat
the plug
believed : two loads, each within the rating
actual : one cord at 130 tenths, 69 percent more heat than it was
built to shed
is either heater over the rating : no
is the rating per socket : no; it is per cord, and the cord
carries the sum
null control - one heater per cord
cord current, two heaters on one lead : 130 tenths of an amp
cord current, one heater per lead : 65 tenths of an amp
current the second cord takes off this one : 65 tenths of an amp
no heater and no rating changed; the loads stopped sharing
a conductor
what a per-heater check against the lead's rating guarantees
each heater alone is within the rating : exactly, 65 under 100
the lead is within its rating : not addressed; the sockets
share one cord, the currents add to 130 tenths, and the
cord's heat is 169 per hundred of what the rating allows
a rating on a cord is a promise about the cord, not about anything plugged
into it; four sockets are four doors into one corridor, and the corridor is
what burns
Each heater draws 65 tenths of an amp, under the rating - that check was right.
But both come down one cord: 130 tenths against a rating of 100, and since
heat goes with the square, 130 per hundred of the current is 169 per hundred of
the heat, until the rating is checked against the sum the cord carries.Trace event types
eml:run:starteml:assigneml:outputeml:run:done