Case 978
The crew was weightless at nine tenths of the gravity
the_crew_was_weightless_at_nine_tenths_of_the_gravity.eml - A visitor watching the crew of a space station float across the cabin reasons that the station is high enough to be out of the Earth's gravity. How much of the gravity is still there at 400 kilometres, and why the crew floats anyway, is computed below.
ok: true — round-trip fixpoint reached (python1 == python2)updated 2026-09-23
EML
eml# Self-authored for the EML case corpus (no external origin). A visitor watching
# the crew of a space station float across the cabin reasons that the station
# is high enough to be out of the Earth's gravity. How much of the gravity is
# still there at 400 kilometres, and why the crew floats anyway, is computed
# below.
#
# The reasoning is careful. Gravity really does weaken with distance from the
# Earth; the station really is 400 km up; a scale aboard really does read zero;
# and the intent is exactly 'is there gravity up there'.
#
# Gravity falls with the square of the distance from the Earth's centre, and 400
# km on top of a 6371 km radius is only six percent farther out - 885 per mille
# of the surface pull remains. The crew floats because the station, the crew and
# the scale are all falling together: in each second they drop 434 cm toward the
# Earth, and at 7673 m/s the surface curves away 434 cm beneath them.
6371 => earth_radius_km
400 => station_altitude_km
982 => surface_gravity_cm_per_s2
7673 => station_speed_m_per_s
70 => astronaut_mass_kg
31416 => pi_times_ten_thousand
earth_radius_km + station_altitude_km => station_distance_from_the_centre_km
int(earth_radius_km * earth_radius_km * 1000 / (station_distance_from_the_centre_km * station_distance_from_the_centre_km)) => gravity_at_the_station_per_mille
int(surface_gravity_cm_per_s2 * earth_radius_km * earth_radius_km / (station_distance_from_the_centre_km * station_distance_from_the_centre_km)) => gravity_at_the_station_cm_per_s2
int(astronaut_mass_kg * gravity_at_the_station_per_mille / 1000) => pull_on_the_astronaut_kg_force
0 => scale_reading_kg
int(gravity_at_the_station_cm_per_s2 / 2) => fall_in_one_second_cm
int(station_speed_m_per_s * station_speed_m_per_s * 100 / (2 * station_distance_from_the_centre_km * 1000)) => surface_curves_away_in_one_second_cm
int(2 * pi_times_ten_thousand * station_distance_from_the_centre_km * 1000 / (station_speed_m_per_s * 10000)) => one_orbit_s
int(one_orbit_s / 60) => one_orbit_minutes
"earth's radius : " + str(earth_radius_km) + " km" ^0
"station altitude : " + str(station_altitude_km) + " km, " + str(station_distance_from_the_centre_km) + " km from the centre" ^0
"gravity at the station : " + str(gravity_at_the_station_per_mille) + " per mille of the surface's, " + str(gravity_at_the_station_cm_per_s2) + " cm/s2" ^0
"pull on a " + str(astronaut_mass_kg) + " kg astronaut : " + str(pull_on_the_astronaut_kg_force) + " kg of force" ^0
"a scale aboard reads : " + str(scale_reading_kg) + " kg" ^0
"" ^0
"station speed : " + str(station_speed_m_per_s) + " m/s, one orbit in " + str(one_orbit_s) + " s, " + str(one_orbit_minutes) + " minutes" ^0
"fall toward the earth in 1 s : " + str(fall_in_one_second_cm) + " cm" ^0
"surface curves away in that 1 s : " + str(surface_curves_away_in_one_second_cm) + " cm, under " + str(station_speed_m_per_s) + " m of travel" ^0
"" ^0
# ---- what the visitor verified ----
"the out-of-gravity reasoning" ^0
" gravity : weakens with distance from the earth" ^0
" altitude : " + str(station_altitude_km) + " km, measured" ^0
" scale aboard : reads " + str(scale_reading_kg) + " kg" ^0
" intent : is there gravity up there" ^0
" facts wrong : 0" ^0
" verdict : UP THERE, GRAVITY IS GONE" ^0
"" ^0
" reading the scale aboard is the part done right here, and" ^0
" it is why " + str(scale_reading_kg) + " kg is exactly what the crew presses on the floor" ^0
"" ^0
# ---- how much gravity is left, and why they float ----
"falling around the earth" ^0
" how gravity weakens : with the square of the distance from the" ^0
" centre, and " + str(station_distance_from_the_centre_km) + " km is not much more than " + str(earth_radius_km) ^0
" what is left : " + str(gravity_at_the_station_per_mille) + " per mille of the surface pull" ^0
" what the station does with it : falls, " + str(fall_in_one_second_cm) + " cm in each second," ^0
" like anything dropped" ^0
" why it never lands : at " + str(station_speed_m_per_s) + " m/s sideways the ground curves" ^0
" away " + str(surface_curves_away_in_one_second_cm) + " cm in that same second" ^0
" why the scale reads zero : the scale falls with the crew, and" ^0
" nothing can press on a floor that falls just as fast" ^0
"" ^0
# ---- what the visitor got ----
"the explanation" ^0
" believed : the station is above the gravity" ^0
" actual : " + str(gravity_at_the_station_per_mille) + " per mille of it, pulling a " + str(astronaut_mass_kg) + " kg astronaut with " + str(pull_on_the_astronaut_kg_force) + " kg" ^0
" of force" ^0
" is the scale wrong : no; nothing presses on it" ^0
" is weightlessness the absence of gravity : no; it is falling" ^0
" freely in it" ^0
"" ^0
# ---- null control ----
# The same crew measured by the pull of gravity on them instead of by a scale
# that falls with them.
0 => nc_weight_read_from_the_scale_kg
61 => nc_weight_read_from_the_pull_of_gravity_kg
61 => nc_kg_the_falling_scale_hides
"null control - measure the pull, not the scale" ^0
" weight, read from the scale : " + str(nc_weight_read_from_the_scale_kg) + " kg" ^0
" weight, read from the pull of gravity : " + str(nc_weight_read_from_the_pull_of_gravity_kg) + " kg" ^0
" kg the falling scale hides : " + str(nc_kg_the_falling_scale_hides) ^0
" no astronaut and no orbit changed; the force was measured" ^0
" instead of what a falling floor pushes back with" ^0
"" ^0
# ---- the rule ----
"what a scale reading zero aboard the station guarantees" ^0
" nothing presses on the floor : exactly" ^0
" there is no gravity up there : not addressed; at " + str(station_distance_from_the_centre_km) + " km" ^0
" from the centre gravity is " + str(gravity_at_the_station_per_mille) + " per mille of the surface's, and" ^0
" the crew floats because crew, scale and station fall" ^0
" together, " + str(fall_in_one_second_cm) + " cm a second, around a curve of the same size" ^0
"" ^0
"weightless is not the same as without weight; it is what gravity feels like" ^0
"when nothing stands in its way, and an orbit is a fall that keeps missing" ^0
"the ground" ^0
"" ^0
"The scale reads " + str(scale_reading_kg) + " - that is exact. But gravity at " + str(station_altitude_km) + " km is " + str(gravity_at_the_station_per_mille) + " per" ^0
"mille of the surface's: the station falls " + str(fall_in_one_second_cm) + " cm in each second while the" ^0
"ground curves away " + str(surface_curves_away_in_one_second_cm) + " cm under its " + str(station_speed_m_per_s) + " m/s, and a scale falling with the" ^0
"crew reads nothing, until the pull is measured instead of the floor." ^0Python (deterministic transpilation)
pythonearth_radius_km = 6371
station_altitude_km = 400
surface_gravity_cm_per_s2 = 982
station_speed_m_per_s = 7673
astronaut_mass_kg = 70
pi_times_ten_thousand = 31416
station_distance_from_the_centre_km = earth_radius_km + station_altitude_km
gravity_at_the_station_per_mille = int(earth_radius_km * earth_radius_km * 1000 / (station_distance_from_the_centre_km * station_distance_from_the_centre_km))
gravity_at_the_station_cm_per_s2 = int(surface_gravity_cm_per_s2 * earth_radius_km * earth_radius_km / (station_distance_from_the_centre_km * station_distance_from_the_centre_km))
pull_on_the_astronaut_kg_force = int(astronaut_mass_kg * gravity_at_the_station_per_mille / 1000)
scale_reading_kg = 0
fall_in_one_second_cm = int(gravity_at_the_station_cm_per_s2 / 2)
surface_curves_away_in_one_second_cm = int(station_speed_m_per_s * station_speed_m_per_s * 100 / (2 * station_distance_from_the_centre_km * 1000))
one_orbit_s = int(2 * pi_times_ten_thousand * station_distance_from_the_centre_km * 1000 / (station_speed_m_per_s * 10000))
one_orbit_minutes = int(one_orbit_s / 60)
print("earth's radius : " + str(earth_radius_km) + " km")
print("station altitude : " + str(station_altitude_km) + " km, " + str(station_distance_from_the_centre_km) + " km from the centre")
print("gravity at the station : " + str(gravity_at_the_station_per_mille) + " per mille of the surface's, " + str(gravity_at_the_station_cm_per_s2) + " cm/s2")
print("pull on a " + str(astronaut_mass_kg) + " kg astronaut : " + str(pull_on_the_astronaut_kg_force) + " kg of force")
print("a scale aboard reads : " + str(scale_reading_kg) + " kg")
print("")
print("station speed : " + str(station_speed_m_per_s) + " m/s, one orbit in " + str(one_orbit_s) + " s, " + str(one_orbit_minutes) + " minutes")
print("fall toward the earth in 1 s : " + str(fall_in_one_second_cm) + " cm")
print("surface curves away in that 1 s : " + str(surface_curves_away_in_one_second_cm) + " cm, under " + str(station_speed_m_per_s) + " m of travel")
print("")
print("the out-of-gravity reasoning")
print(" gravity : weakens with distance from the earth")
print(" altitude : " + str(station_altitude_km) + " km, measured")
print(" scale aboard : reads " + str(scale_reading_kg) + " kg")
print(" intent : is there gravity up there")
print(" facts wrong : 0")
print(" verdict : UP THERE, GRAVITY IS GONE")
print("")
print(" reading the scale aboard is the part done right here, and")
print(" it is why " + str(scale_reading_kg) + " kg is exactly what the crew presses on the floor")
print("")
print("falling around the earth")
print(" how gravity weakens : with the square of the distance from the")
print(" centre, and " + str(station_distance_from_the_centre_km) + " km is not much more than " + str(earth_radius_km))
print(" what is left : " + str(gravity_at_the_station_per_mille) + " per mille of the surface pull")
print(" what the station does with it : falls, " + str(fall_in_one_second_cm) + " cm in each second,")
print(" like anything dropped")
print(" why it never lands : at " + str(station_speed_m_per_s) + " m/s sideways the ground curves")
print(" away " + str(surface_curves_away_in_one_second_cm) + " cm in that same second")
print(" why the scale reads zero : the scale falls with the crew, and")
print(" nothing can press on a floor that falls just as fast")
print("")
print("the explanation")
print(" believed : the station is above the gravity")
print(" actual : " + str(gravity_at_the_station_per_mille) + " per mille of it, pulling a " + str(astronaut_mass_kg) + " kg astronaut with " + str(pull_on_the_astronaut_kg_force) + " kg")
print(" of force")
print(" is the scale wrong : no; nothing presses on it")
print(" is weightlessness the absence of gravity : no; it is falling")
print(" freely in it")
print("")
nc_weight_read_from_the_scale_kg = 0
nc_weight_read_from_the_pull_of_gravity_kg = 61
nc_kg_the_falling_scale_hides = 61
print("null control - measure the pull, not the scale")
print(" weight, read from the scale : " + str(nc_weight_read_from_the_scale_kg) + " kg")
print(" weight, read from the pull of gravity : " + str(nc_weight_read_from_the_pull_of_gravity_kg) + " kg")
print(" kg the falling scale hides : " + str(nc_kg_the_falling_scale_hides))
print(" no astronaut and no orbit changed; the force was measured")
print(" instead of what a falling floor pushes back with")
print("")
print("what a scale reading zero aboard the station guarantees")
print(" nothing presses on the floor : exactly")
print(" there is no gravity up there : not addressed; at " + str(station_distance_from_the_centre_km) + " km")
print(" from the centre gravity is " + str(gravity_at_the_station_per_mille) + " per mille of the surface's, and")
print(" the crew floats because crew, scale and station fall")
print(" together, " + str(fall_in_one_second_cm) + " cm a second, around a curve of the same size")
print("")
print("weightless is not the same as without weight; it is what gravity feels like")
print("when nothing stands in its way, and an orbit is a fall that keeps missing")
print("the ground")
print("")
print("The scale reads " + str(scale_reading_kg) + " - that is exact. But gravity at " + str(station_altitude_km) + " km is " + str(gravity_at_the_station_per_mille) + " per")
print("mille of the surface's: the station falls " + str(fall_in_one_second_cm) + " cm in each second while the")
print("ground curves away " + str(surface_curves_away_in_one_second_cm) + " cm under its " + str(station_speed_m_per_s) + " m/s, and a scale falling with the")
print("crew reads nothing, until the pull is measured instead of the floor.")stdout (executed)
textearth's radius : 6371 km
station altitude : 400 km, 6771 km from the centre
gravity at the station : 885 per mille of the surface's, 869 cm/s2
pull on a 70 kg astronaut : 61 kg of force
a scale aboard reads : 0 kg
station speed : 7673 m/s, one orbit in 5544 s, 92 minutes
fall toward the earth in 1 s : 434 cm
surface curves away in that 1 s : 434 cm, under 7673 m of travel
the out-of-gravity reasoning
gravity : weakens with distance from the earth
altitude : 400 km, measured
scale aboard : reads 0 kg
intent : is there gravity up there
facts wrong : 0
verdict : UP THERE, GRAVITY IS GONE
reading the scale aboard is the part done right here, and
it is why 0 kg is exactly what the crew presses on the floor
falling around the earth
how gravity weakens : with the square of the distance from the
centre, and 6771 km is not much more than 6371
what is left : 885 per mille of the surface pull
what the station does with it : falls, 434 cm in each second,
like anything dropped
why it never lands : at 7673 m/s sideways the ground curves
away 434 cm in that same second
why the scale reads zero : the scale falls with the crew, and
nothing can press on a floor that falls just as fast
the explanation
believed : the station is above the gravity
actual : 885 per mille of it, pulling a 70 kg astronaut with 61 kg
of force
is the scale wrong : no; nothing presses on it
is weightlessness the absence of gravity : no; it is falling
freely in it
null control - measure the pull, not the scale
weight, read from the scale : 0 kg
weight, read from the pull of gravity : 61 kg
kg the falling scale hides : 61
no astronaut and no orbit changed; the force was measured
instead of what a falling floor pushes back with
what a scale reading zero aboard the station guarantees
nothing presses on the floor : exactly
there is no gravity up there : not addressed; at 6771 km
from the centre gravity is 885 per mille of the surface's, and
the crew floats because crew, scale and station fall
together, 434 cm a second, around a curve of the same size
weightless is not the same as without weight; it is what gravity feels like
when nothing stands in its way, and an orbit is a fall that keeps missing
the ground
The scale reads 0 - that is exact. But gravity at 400 km is 885 per
mille of the surface's: the station falls 434 cm in each second while the
ground curves away 434 cm under its 7673 m/s, and a scale falling with the
crew reads nothing, until the pull is measured instead of the floor.Trace event types
eml:run:starteml:assigneml:outputeml:run:done