Book II · Proposition 11

II.11

To cut a given straight line so that the rectangle contained by the whole and one of the segments is equal to the square on the remaining segment.Heath, 1908

The golden section. The point of division is irrational; the kernel holds it exactly, as (sqrt(5)-1)/2 of the whole.

ABEFH
70 lines and circles drawn, of which 60 helper constructions drew the fainter ones

Every step, checked

What it needs, and what needs it

Needs: I.10 I.46 I.47 II.6

Used by: IV.10 IV.11 VI.30

Rests on: C.N.1, C.N.2, C.N.3, C.N.4, C.N.5, Def.10, Def.15, Def.22, Def.3, Def.4, Post.1, Post.5

Depth: 15 steps of argument above the first principles. Parallel postulate: needed.

What it takes on trust

The proposition as code

@proposition(
    "II.11",
    CONSTRUCTION,
    sample=samples.segment,
    note="The golden section. The point of division is irrational; the kernel holds "
    "it exactly, as (sqrt(5)-1)/2 of the whole.",
)
def prop_II_11(a: Point, b: Point) -> Out:
    hypothesis("A and B are distinct", a != b)
    _, _, _, d = prop_I_46(a, b).square
    middle = posit(prop_I_10(a, d).midpoint, "E")
    reach = circle_with_radius2(middle, len2(middle, b), "circle centre E through B")
    f = posit(meet(line(d, a), reach)[1], "F")
    cut_off = circle_with_radius2(a, len2(a, f), "circle centre A with radius AF")
    h = posit(meet(line(a, b), cut_off)[1], "H")

    whole, greater = length(a, b), length(a, h)
    lesser = length(h, b)
    # DA is bisected at E and produced to F, which is II.6's configuration, and
    # EAB is right-angled at A, which is I.47's.
    because(prop_II_6, d, a, f)
    because(prop_I_47, middle, a, b)

    claim("H divides AB", "Post.1", on_line(h, Line.through(a, b)))
    claim("the rectangle contained by the whole and the lesser segment equals the "
          "square on the greater", ["II.6", "I.47"], whole * lesser == greater * greater)
    claim("so the whole is cut in extreme and mean ratio", "Def.3",
          greater * greater + greater * whole == whole * whole)
    return Out(section=h)