<!-- canonical: efficientnewlanguage.org/ai/examples/996-the-methane-burned-into-nearly-three-times-its-mass | ai_layer_version: 0.1.0 | updated: 2026-09-24 -->

# Example 996 — The methane burned into nearly three times its mass

`the_methane_burned_into_nearly_three_times_its_mass.eml` - A household burns 1000 kg of natural gas - methane - in a year, and a report says that makes 2750 kg of carbon dioxide. A neighbour objects: mass is conserved, so burning 1000 kg of gas cannot produce more than 1000 kg of anything. What burning really produces is computed below.

## EML

```eml
# Self-authored for the EML case corpus (no external origin). A household burns
# 1000 kg of natural gas - methane - in a year, and a report says that makes 2750
# kg of carbon dioxide. A neighbour objects: mass is conserved, so burning 1000
# kg of gas cannot produce more than 1000 kg of anything. What burning really
# produces is computed below.
#
# The reasoning is careful. Mass really is conserved in burning; 1000 kg of
# methane really was burned; the carbon dioxide really does come from that
# methane's carbon; and the intent is exactly 'how much carbon dioxide'.
#
# Burning is a reaction with oxygen from the air: each 16 g of methane takes 64 g
# of oxygen and gives 44 g of carbon dioxide and 36 g of water. The fuel's 1000
# kg take 4000 kg of oxygen with them, and the 5000 kg of products include 2750
# of carbon dioxide - mass is conserved, just not the mass the neighbour counted.

1000 => methane_burned_kg
12 => carbon_g_per_mole
1 => hydrogen_g_per_mole
16 => oxygen_g_per_mole

carbon_g_per_mole + 4 * hydrogen_g_per_mole => methane_g_per_mole
2 * oxygen_g_per_mole => oxygen_molecule_g_per_mole
carbon_g_per_mole + 2 * oxygen_g_per_mole => carbon_dioxide_g_per_mole
2 * hydrogen_g_per_mole + oxygen_g_per_mole => water_g_per_mole
2 * oxygen_molecule_g_per_mole => oxygen_used_per_mole_of_methane_g
2 * water_g_per_mole => water_made_per_mole_of_methane_g
int(methane_burned_kg * oxygen_used_per_mole_of_methane_g / methane_g_per_mole) => oxygen_taken_from_the_air_kg
int(methane_burned_kg * carbon_dioxide_g_per_mole / methane_g_per_mole) => carbon_dioxide_made_kg
int(methane_burned_kg * water_made_per_mole_of_methane_g / methane_g_per_mole) => water_made_kg
methane_burned_kg + oxygen_taken_from_the_air_kg => mass_going_in_kg
carbon_dioxide_made_kg + water_made_kg => mass_coming_out_kg
int(carbon_dioxide_made_kg * 100 / methane_burned_kg) => carbon_dioxide_vs_fuel_per_hundred

"molecule masses                 : methane " + str(methane_g_per_mole) + ", oxygen " + str(oxygen_molecule_g_per_mole) + ", carbon dioxide " + str(carbon_dioxide_g_per_mole) + ", water " + str(water_g_per_mole) ^0
"per " + str(methane_g_per_mole) + " g of methane            : takes " + str(oxygen_used_per_mole_of_methane_g) + " g of oxygen, gives " + str(carbon_dioxide_g_per_mole) + " g of carbon dioxide and " + str(water_made_per_mole_of_methane_g) + " g of water" ^0
"" ^0
"methane burned                  : " + str(methane_burned_kg) + " kg" ^0
"oxygen taken from the air       : " + str(oxygen_taken_from_the_air_kg) + " kg" ^0
"mass going in                   : " + str(mass_going_in_kg) + " kg" ^0
"carbon dioxide made             : " + str(carbon_dioxide_made_kg) + " kg, " + str(carbon_dioxide_vs_fuel_per_hundred) + " per hundred of the fuel" ^0
"water made                      : " + str(water_made_kg) + " kg" ^0
"mass coming out                 : " + str(mass_coming_out_kg) + " kg" ^0
"" ^0

# ---- what the neighbour verified ----

"the conservation reasoning" ^0
"  law : mass is conserved in burning" ^0
"  fuel : " + str(methane_burned_kg) + " kg of methane" ^0
"  source of the carbon : the methane, and nothing else" ^0
"  intent : how much carbon dioxide" ^0
"  facts wrong : 0" ^0
"  verdict : NO MORE THAN " + str(methane_burned_kg) + " KG OF ANYTHING CAN COME OUT" ^0
"" ^0
"  holding to the conservation of mass is the part done right" ^0
"  here, and it is why what goes in and what comes out must weigh" ^0
"  the same" ^0
"" ^0

# ---- what burning takes in ----

"the unweighed ingredient" ^0
"  what burning is : methane combining with oxygen from the air" ^0
"  per molecule of methane : two of oxygen, " + str(oxygen_used_per_mole_of_methane_g) + " g for every " + str(methane_g_per_mole) + " g of fuel" ^0
"  what goes in : " + str(methane_burned_kg) + " kg of fuel and " + str(oxygen_taken_from_the_air_kg) + " kg of oxygen, " + str(mass_going_in_kg) + " kg" ^0
"  what comes out : " + str(carbon_dioxide_made_kg) + " kg of carbon dioxide and " + str(water_made_kg) + " kg of water," ^0
"    " + str(mass_coming_out_kg) + " kg - conserved to the kilogram" ^0
"  why the carbon dioxide outweighs the fuel : each carbon atom" ^0
"    leaves with two oxygen atoms that were never in the fuel" ^0
"" ^0

# ---- what the neighbour got ----

"the objection" ^0
"  believed : at most " + str(methane_burned_kg) + " kg of carbon dioxide" ^0
"  actual : " + str(carbon_dioxide_made_kg) + " kg" ^0
"  is the conservation of mass wrong : no; " + str(mass_going_in_kg) + " kg in, " + str(mass_coming_out_kg) + " kg out" ^0
"  is the fuel all that goes in : no; the air supplies four times" ^0
"    its mass in oxygen" ^0
"" ^0

# ---- null control ----

# The same year's burning weighed with the oxygen from the air counted in.
1000 => nc_carbon_dioxide_capped_at_the_fuel_kg
2750 => nc_carbon_dioxide_counting_the_air_kg
1750 => nc_kg_the_air_adds

"null control - weigh the air too" ^0
"  carbon dioxide, capped at the fuel's mass : " + str(nc_carbon_dioxide_capped_at_the_fuel_kg) + " kg" ^0
"  carbon dioxide, counting the oxygen from the air : " + str(nc_carbon_dioxide_counting_the_air_kg) + " kg" ^0
"  kg the air adds : " + str(nc_kg_the_air_adds) ^0
"  no fuel and no flame changed; everything that entered the" ^0
"  reaction was put on the scale" ^0
"" ^0

# ---- the rule ----

"what the conservation of mass guarantees" ^0
"  what comes out of the flame weighs what went in : exactly" ^0
"  the carbon dioxide weighs no more than the fuel : not addressed;" ^0
"    oxygen from the air goes in too, " + str(oxygen_taken_from_the_air_kg) + " kg of it, and the " + str(methane_burned_kg) + " kg of" ^0
"    methane come out as " + str(carbon_dioxide_made_kg) + " kg of carbon dioxide and " + str(water_made_kg) + " of water" ^0
"" ^0

"a law of conservation balances every account, including the ones nobody" ^0
"opened; the flame draws from the air, and the air's share arrives in the" ^0
"smoke" ^0
"" ^0

"Mass is conserved - " + str(mass_going_in_kg) + " kg in, " + str(mass_coming_out_kg) + " kg out. But the fuel is not all that" ^0
"goes in: " + str(methane_burned_kg) + " kg of methane take " + str(oxygen_taken_from_the_air_kg) + " kg of oxygen from the air, and each carbon" ^0
"atom leaves with two oxygen atoms, so the year's burning makes " + str(carbon_dioxide_made_kg) + " kg of carbon" ^0
"dioxide, until the air is put on the scale with the fuel." ^0
```

## Python (deterministic transpilation)

```python
methane_burned_kg = 1000
carbon_g_per_mole = 12
hydrogen_g_per_mole = 1
oxygen_g_per_mole = 16
methane_g_per_mole = carbon_g_per_mole + 4 * hydrogen_g_per_mole
oxygen_molecule_g_per_mole = 2 * oxygen_g_per_mole
carbon_dioxide_g_per_mole = carbon_g_per_mole + 2 * oxygen_g_per_mole
water_g_per_mole = 2 * hydrogen_g_per_mole + oxygen_g_per_mole
oxygen_used_per_mole_of_methane_g = 2 * oxygen_molecule_g_per_mole
water_made_per_mole_of_methane_g = 2 * water_g_per_mole
oxygen_taken_from_the_air_kg = int(methane_burned_kg * oxygen_used_per_mole_of_methane_g / methane_g_per_mole)
carbon_dioxide_made_kg = int(methane_burned_kg * carbon_dioxide_g_per_mole / methane_g_per_mole)
water_made_kg = int(methane_burned_kg * water_made_per_mole_of_methane_g / methane_g_per_mole)
mass_going_in_kg = methane_burned_kg + oxygen_taken_from_the_air_kg
mass_coming_out_kg = carbon_dioxide_made_kg + water_made_kg
carbon_dioxide_vs_fuel_per_hundred = int(carbon_dioxide_made_kg * 100 / methane_burned_kg)
print("molecule masses                 : methane " + str(methane_g_per_mole) + ", oxygen " + str(oxygen_molecule_g_per_mole) + ", carbon dioxide " + str(carbon_dioxide_g_per_mole) + ", water " + str(water_g_per_mole))
print("per " + str(methane_g_per_mole) + " g of methane            : takes " + str(oxygen_used_per_mole_of_methane_g) + " g of oxygen, gives " + str(carbon_dioxide_g_per_mole) + " g of carbon dioxide and " + str(water_made_per_mole_of_methane_g) + " g of water")
print("")
print("methane burned                  : " + str(methane_burned_kg) + " kg")
print("oxygen taken from the air       : " + str(oxygen_taken_from_the_air_kg) + " kg")
print("mass going in                   : " + str(mass_going_in_kg) + " kg")
print("carbon dioxide made             : " + str(carbon_dioxide_made_kg) + " kg, " + str(carbon_dioxide_vs_fuel_per_hundred) + " per hundred of the fuel")
print("water made                      : " + str(water_made_kg) + " kg")
print("mass coming out                 : " + str(mass_coming_out_kg) + " kg")
print("")
print("the conservation reasoning")
print("  law : mass is conserved in burning")
print("  fuel : " + str(methane_burned_kg) + " kg of methane")
print("  source of the carbon : the methane, and nothing else")
print("  intent : how much carbon dioxide")
print("  facts wrong : 0")
print("  verdict : NO MORE THAN " + str(methane_burned_kg) + " KG OF ANYTHING CAN COME OUT")
print("")
print("  holding to the conservation of mass is the part done right")
print("  here, and it is why what goes in and what comes out must weigh")
print("  the same")
print("")
print("the unweighed ingredient")
print("  what burning is : methane combining with oxygen from the air")
print("  per molecule of methane : two of oxygen, " + str(oxygen_used_per_mole_of_methane_g) + " g for every " + str(methane_g_per_mole) + " g of fuel")
print("  what goes in : " + str(methane_burned_kg) + " kg of fuel and " + str(oxygen_taken_from_the_air_kg) + " kg of oxygen, " + str(mass_going_in_kg) + " kg")
print("  what comes out : " + str(carbon_dioxide_made_kg) + " kg of carbon dioxide and " + str(water_made_kg) + " kg of water,")
print("    " + str(mass_coming_out_kg) + " kg - conserved to the kilogram")
print("  why the carbon dioxide outweighs the fuel : each carbon atom")
print("    leaves with two oxygen atoms that were never in the fuel")
print("")
print("the objection")
print("  believed : at most " + str(methane_burned_kg) + " kg of carbon dioxide")
print("  actual : " + str(carbon_dioxide_made_kg) + " kg")
print("  is the conservation of mass wrong : no; " + str(mass_going_in_kg) + " kg in, " + str(mass_coming_out_kg) + " kg out")
print("  is the fuel all that goes in : no; the air supplies four times")
print("    its mass in oxygen")
print("")
nc_carbon_dioxide_capped_at_the_fuel_kg = 1000
nc_carbon_dioxide_counting_the_air_kg = 2750
nc_kg_the_air_adds = 1750
print("null control - weigh the air too")
print("  carbon dioxide, capped at the fuel's mass : " + str(nc_carbon_dioxide_capped_at_the_fuel_kg) + " kg")
print("  carbon dioxide, counting the oxygen from the air : " + str(nc_carbon_dioxide_counting_the_air_kg) + " kg")
print("  kg the air adds : " + str(nc_kg_the_air_adds))
print("  no fuel and no flame changed; everything that entered the")
print("  reaction was put on the scale")
print("")
print("what the conservation of mass guarantees")
print("  what comes out of the flame weighs what went in : exactly")
print("  the carbon dioxide weighs no more than the fuel : not addressed;")
print("    oxygen from the air goes in too, " + str(oxygen_taken_from_the_air_kg) + " kg of it, and the " + str(methane_burned_kg) + " kg of")
print("    methane come out as " + str(carbon_dioxide_made_kg) + " kg of carbon dioxide and " + str(water_made_kg) + " of water")
print("")
print("a law of conservation balances every account, including the ones nobody")
print("opened; the flame draws from the air, and the air's share arrives in the")
print("smoke")
print("")
print("Mass is conserved - " + str(mass_going_in_kg) + " kg in, " + str(mass_coming_out_kg) + " kg out. But the fuel is not all that")
print("goes in: " + str(methane_burned_kg) + " kg of methane take " + str(oxygen_taken_from_the_air_kg) + " kg of oxygen from the air, and each carbon")
print("atom leaves with two oxygen atoms, so the year's burning makes " + str(carbon_dioxide_made_kg) + " kg of carbon")
print("dioxide, until the air is put on the scale with the fuel.")
```

## stdout (executed)

```text
molecule masses                 : methane 16, oxygen 32, carbon dioxide 44, water 18
per 16 g of methane            : takes 64 g of oxygen, gives 44 g of carbon dioxide and 36 g of water

methane burned                  : 1000 kg
oxygen taken from the air       : 4000 kg
mass going in                   : 5000 kg
carbon dioxide made             : 2750 kg, 275 per hundred of the fuel
water made                      : 2250 kg
mass coming out                 : 5000 kg

the conservation reasoning
  law : mass is conserved in burning
  fuel : 1000 kg of methane
  source of the carbon : the methane, and nothing else
  intent : how much carbon dioxide
  facts wrong : 0
  verdict : NO MORE THAN 1000 KG OF ANYTHING CAN COME OUT

  holding to the conservation of mass is the part done right
  here, and it is why what goes in and what comes out must weigh
  the same

the unweighed ingredient
  what burning is : methane combining with oxygen from the air
  per molecule of methane : two of oxygen, 64 g for every 16 g of fuel
  what goes in : 1000 kg of fuel and 4000 kg of oxygen, 5000 kg
  what comes out : 2750 kg of carbon dioxide and 2250 kg of water,
    5000 kg - conserved to the kilogram
  why the carbon dioxide outweighs the fuel : each carbon atom
    leaves with two oxygen atoms that were never in the fuel

the objection
  believed : at most 1000 kg of carbon dioxide
  actual : 2750 kg
  is the conservation of mass wrong : no; 5000 kg in, 5000 kg out
  is the fuel all that goes in : no; the air supplies four times
    its mass in oxygen

null control - weigh the air too
  carbon dioxide, capped at the fuel's mass : 1000 kg
  carbon dioxide, counting the oxygen from the air : 2750 kg
  kg the air adds : 1750
  no fuel and no flame changed; everything that entered the
  reaction was put on the scale

what the conservation of mass guarantees
  what comes out of the flame weighs what went in : exactly
  the carbon dioxide weighs no more than the fuel : not addressed;
    oxygen from the air goes in too, 4000 kg of it, and the 1000 kg of
    methane come out as 2750 kg of carbon dioxide and 2250 of water

a law of conservation balances every account, including the ones nobody
opened; the flame draws from the air, and the air's share arrives in the
smoke

Mass is conserved - 5000 kg in, 5000 kg out. But the fuel is not all that
goes in: 1000 kg of methane take 4000 kg of oxygen from the air, and each carbon
atom leaves with two oxygen atoms, so the year's burning makes 2750 kg of carbon
dioxide, until the air is put on the scale with the fuel.
```

## Round-trip

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

## Trace event types

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