Case 973

Her brother had it and her sons risk was one in four

her_brother_had_it_and_her_sons_risk_was_one_in_four.eml - A woman's brother and her mother's brother both have an X-linked recessive condition. She is unaffected, and so are her mother and father. She reasons that the condition shows up in the family's men, never its women, that nothing could have come through her unaffected father, and that her sons' risk is the population's, one boy in 5000. Her sons' real risk 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 woman's brother
# and her mother's brother both have an X-linked recessive condition. She is
# unaffected, and so are her mother and father. She reasons that the condition
# shows up in the family's men, never its women, that nothing could have come
# through her unaffected father, and that her sons' risk is the population's,
# one boy in 5000. Her sons' real risk is computed below.
#
# The reasoning is careful. She really is unaffected; her father really is
# unaffected; the women of the family really do not show it; and the intent is
# exactly 'what is the risk for my sons'.
#
# The gene sits on the X, which women carry in two copies and men in one, so a
# woman with one altered copy is usually unaffected and passes it on. Her
# mother, the sister of one affected man and the mother of another, carries it.
# She received one of her mother's two X's - a carrier one time in two - and
# each son of a carrier inherits it one time in two: a risk of one in four for
# each son, 1250 times the population's.

5000 => boys_per_affected_boy_in_the_population
10000 => certainty_per_myriad

certainty_per_myriad => mother_is_a_carrier_per_myriad
int(mother_is_a_carrier_per_myriad / 2) => she_is_a_carrier_per_myriad
int(she_is_a_carrier_per_myriad / 2) => each_son_affected_per_myriad
0 => each_daughter_affected_per_myriad
int(she_is_a_carrier_per_myriad / 2) => each_daughter_a_carrier_per_myriad
int(certainty_per_myriad / boys_per_affected_boy_in_the_population) => population_son_risk_per_myriad
int(each_son_affected_per_myriad / population_son_risk_per_myriad) => times_the_population_risk

"population                      : 1 boy in " + str(boys_per_affected_boy_in_the_population) + " affected, " + str(population_son_risk_per_myriad) + " per ten thousand" ^0
"her mother                      : sister of one affected man, mother of another" ^0
"  carrier                       : " + str(mother_is_a_carrier_per_myriad) + " per ten thousand" ^0
"she, one of her mother's two X's : carrier " + str(she_is_a_carrier_per_myriad) + " per ten thousand" ^0
"" ^0
"each son                        : affected " + str(each_son_affected_per_myriad) + " per ten thousand" ^0
"each daughter, unaffected father : affected " + str(each_daughter_affected_per_myriad) + ", a carrier " + str(each_daughter_a_carrier_per_myriad) + " per ten thousand" ^0
"each son vs the population      : " + str(times_the_population_risk) + " times" ^0
"" ^0

# ---- what she verified ----

"the it-is-in-the-men reasoning" ^0
"  herself : unaffected" ^0
"  her father : unaffected, so nothing came through him" ^0
"  the women of the family : none of them shows it" ^0
"  intent : what is the risk for my sons" ^0
"  facts wrong : 0" ^0
"  verdict : MY SONS HAVE THE POPULATION'S RISK" ^0
"" ^0
"  ruling out her father as a source is the part done right" ^0
"  here, and it is why no copy could have reached her from his" ^0
"  side" ^0
"" ^0

# ---- how the gene travels ----

"carried in two copies, shown in one" ^0
"  where the gene sits : on the X; women have two, men one" ^0
"  a woman with one altered copy : usually unaffected, because" ^0
"    her other X covers for it, and a carrier all the same" ^0
"  her mother : linked to two affected men, her brother and her" ^0
"    son, through her own X's, a carrier " + str(mother_is_a_carrier_per_myriad) + " per ten thousand" ^0
"  she : received one of her mother's two X's, a carrier " + str(she_is_a_carrier_per_myriad) ^0
"    per ten thousand" ^0
"  her sons : each takes one of her X's, affected " + str(each_son_affected_per_myriad) + " per ten" ^0
"    thousand" ^0
"  why the women look clear : they carry it without showing it" ^0
"" ^0

# ---- what she got ----

"the risk" ^0
"  believed : " + str(population_son_risk_per_myriad) + " per ten thousand, the population's" ^0
"  actual : " + str(each_son_affected_per_myriad) + " per ten thousand for each son, one in four" ^0
"  is anyone in her family misdescribed : no; every unaffected" ^0
"    person really is unaffected" ^0
"  does unaffected mean not carrying it : not for an X-linked" ^0
"    recessive gene in a woman" ^0
"" ^0

# ---- null control ----

# The same risk worked out by tracing her brother's X back through their mother
# instead of by reading it off the people who are unaffected.
2 => nc_son_risk_read_off_the_unaffected_per_myriad
2500 => nc_son_risk_tracing_the_x_per_myriad
2498 => nc_per_myriad_the_tracing_reveals

"null control - trace the X, not the symptoms" ^0
"  son's risk, read off the unaffected : " + str(nc_son_risk_read_off_the_unaffected_per_myriad) + " per ten thousand" ^0
"  son's risk, tracing the X : " + str(nc_son_risk_tracing_the_x_per_myriad) + " per ten thousand" ^0
"  per ten thousand the tracing reveals : " + str(nc_per_myriad_the_tracing_reveals) ^0
"  no one in the family changed; the gene was followed along the" ^0
"  chromosome that carries it" ^0
"" ^0

# ---- the rule ----

"what an unaffected woman with an unaffected father guarantees" ^0
"  nothing reached her from her father : exactly" ^0
"  her sons carry the population's risk : not addressed; her mother" ^0
"    carries the gene her brother has, she carries it " + str(she_is_a_carrier_per_myriad) + " per ten" ^0
"    thousand, and each son is affected " + str(each_son_affected_per_myriad) + " per ten thousand, " + str(times_the_population_risk) ^0
"    times the population's " + str(population_son_risk_per_myriad) ^0
"" ^0

"a gene that shows in only one sex travels through the other; the family's" ^0
"unaffected women are not where it stopped but where it waited" ^0
"" ^0

"She is unaffected and her father could not have passed it on - both true." ^0
"But the gene rides on the X: her mother carries it, she carries it " + str(she_is_a_carrier_per_myriad) + " per" ^0
"ten thousand, and each son inherits it " + str(each_son_affected_per_myriad) + " per ten thousand, " + str(times_the_population_risk) + " times the" ^0
"population's " + str(population_son_risk_per_myriad) + ", until the risk is traced along the X and not read off the symptoms." ^0

Python (deterministic transpilation)

python
boys_per_affected_boy_in_the_population = 5000
certainty_per_myriad = 10000
mother_is_a_carrier_per_myriad = certainty_per_myriad
she_is_a_carrier_per_myriad = int(mother_is_a_carrier_per_myriad / 2)
each_son_affected_per_myriad = int(she_is_a_carrier_per_myriad / 2)
each_daughter_affected_per_myriad = 0
each_daughter_a_carrier_per_myriad = int(she_is_a_carrier_per_myriad / 2)
population_son_risk_per_myriad = int(certainty_per_myriad / boys_per_affected_boy_in_the_population)
times_the_population_risk = int(each_son_affected_per_myriad / population_son_risk_per_myriad)
print("population                      : 1 boy in " + str(boys_per_affected_boy_in_the_population) + " affected, " + str(population_son_risk_per_myriad) + " per ten thousand")
print("her mother                      : sister of one affected man, mother of another")
print("  carrier                       : " + str(mother_is_a_carrier_per_myriad) + " per ten thousand")
print("she, one of her mother's two X's : carrier " + str(she_is_a_carrier_per_myriad) + " per ten thousand")
print("")
print("each son                        : affected " + str(each_son_affected_per_myriad) + " per ten thousand")
print("each daughter, unaffected father : affected " + str(each_daughter_affected_per_myriad) + ", a carrier " + str(each_daughter_a_carrier_per_myriad) + " per ten thousand")
print("each son vs the population      : " + str(times_the_population_risk) + " times")
print("")
print("the it-is-in-the-men reasoning")
print("  herself : unaffected")
print("  her father : unaffected, so nothing came through him")
print("  the women of the family : none of them shows it")
print("  intent : what is the risk for my sons")
print("  facts wrong : 0")
print("  verdict : MY SONS HAVE THE POPULATION'S RISK")
print("")
print("  ruling out her father as a source is the part done right")
print("  here, and it is why no copy could have reached her from his")
print("  side")
print("")
print("carried in two copies, shown in one")
print("  where the gene sits : on the X; women have two, men one")
print("  a woman with one altered copy : usually unaffected, because")
print("    her other X covers for it, and a carrier all the same")
print("  her mother : linked to two affected men, her brother and her")
print("    son, through her own X's, a carrier " + str(mother_is_a_carrier_per_myriad) + " per ten thousand")
print("  she : received one of her mother's two X's, a carrier " + str(she_is_a_carrier_per_myriad))
print("    per ten thousand")
print("  her sons : each takes one of her X's, affected " + str(each_son_affected_per_myriad) + " per ten")
print("    thousand")
print("  why the women look clear : they carry it without showing it")
print("")
print("the risk")
print("  believed : " + str(population_son_risk_per_myriad) + " per ten thousand, the population's")
print("  actual : " + str(each_son_affected_per_myriad) + " per ten thousand for each son, one in four")
print("  is anyone in her family misdescribed : no; every unaffected")
print("    person really is unaffected")
print("  does unaffected mean not carrying it : not for an X-linked")
print("    recessive gene in a woman")
print("")
nc_son_risk_read_off_the_unaffected_per_myriad = 2
nc_son_risk_tracing_the_x_per_myriad = 2500
nc_per_myriad_the_tracing_reveals = 2498
print("null control - trace the X, not the symptoms")
print("  son's risk, read off the unaffected : " + str(nc_son_risk_read_off_the_unaffected_per_myriad) + " per ten thousand")
print("  son's risk, tracing the X : " + str(nc_son_risk_tracing_the_x_per_myriad) + " per ten thousand")
print("  per ten thousand the tracing reveals : " + str(nc_per_myriad_the_tracing_reveals))
print("  no one in the family changed; the gene was followed along the")
print("  chromosome that carries it")
print("")
print("what an unaffected woman with an unaffected father guarantees")
print("  nothing reached her from her father : exactly")
print("  her sons carry the population's risk : not addressed; her mother")
print("    carries the gene her brother has, she carries it " + str(she_is_a_carrier_per_myriad) + " per ten")
print("    thousand, and each son is affected " + str(each_son_affected_per_myriad) + " per ten thousand, " + str(times_the_population_risk))
print("    times the population's " + str(population_son_risk_per_myriad))
print("")
print("a gene that shows in only one sex travels through the other; the family's")
print("unaffected women are not where it stopped but where it waited")
print("")
print("She is unaffected and her father could not have passed it on - both true.")
print("But the gene rides on the X: her mother carries it, she carries it " + str(she_is_a_carrier_per_myriad) + " per")
print("ten thousand, and each son inherits it " + str(each_son_affected_per_myriad) + " per ten thousand, " + str(times_the_population_risk) + " times the")
print("population's " + str(population_son_risk_per_myriad) + ", until the risk is traced along the X and not read off the symptoms.")

stdout (executed)

text
population                      : 1 boy in 5000 affected, 2 per ten thousand
her mother                      : sister of one affected man, mother of another
  carrier                       : 10000 per ten thousand
she, one of her mother's two X's : carrier 5000 per ten thousand

each son                        : affected 2500 per ten thousand
each daughter, unaffected father : affected 0, a carrier 2500 per ten thousand
each son vs the population      : 1250 times

the it-is-in-the-men reasoning
  herself : unaffected
  her father : unaffected, so nothing came through him
  the women of the family : none of them shows it
  intent : what is the risk for my sons
  facts wrong : 0
  verdict : MY SONS HAVE THE POPULATION'S RISK

  ruling out her father as a source is the part done right
  here, and it is why no copy could have reached her from his
  side

carried in two copies, shown in one
  where the gene sits : on the X; women have two, men one
  a woman with one altered copy : usually unaffected, because
    her other X covers for it, and a carrier all the same
  her mother : linked to two affected men, her brother and her
    son, through her own X's, a carrier 10000 per ten thousand
  she : received one of her mother's two X's, a carrier 5000
    per ten thousand
  her sons : each takes one of her X's, affected 2500 per ten
    thousand
  why the women look clear : they carry it without showing it

the risk
  believed : 2 per ten thousand, the population's
  actual : 2500 per ten thousand for each son, one in four
  is anyone in her family misdescribed : no; every unaffected
    person really is unaffected
  does unaffected mean not carrying it : not for an X-linked
    recessive gene in a woman

null control - trace the X, not the symptoms
  son's risk, read off the unaffected : 2 per ten thousand
  son's risk, tracing the X : 2500 per ten thousand
  per ten thousand the tracing reveals : 2498
  no one in the family changed; the gene was followed along the
  chromosome that carries it

what an unaffected woman with an unaffected father guarantees
  nothing reached her from her father : exactly
  her sons carry the population's risk : not addressed; her mother
    carries the gene her brother has, she carries it 5000 per ten
    thousand, and each son is affected 2500 per ten thousand, 1250
    times the population's 2

a gene that shows in only one sex travels through the other; the family's
unaffected women are not where it stopped but where it waited

She is unaffected and her father could not have passed it on - both true.
But the gene rides on the X: her mother carries it, she carries it 5000 per
ten thousand, and each son inherits it 2500 per ten thousand, 1250 times the
population's 2, until the risk is traced along the X and not read off the symptoms.

Trace event types

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