Book VI · Proposition 27

VI.27

Of all the parallelograms applied to the same straight line and deficient by parallelogrammic figures similar and similarly situated to that described on the half of the straight line, that parallelogram is greatest which is applied to the half of the straight line and is similar to the defect.Heath, 1908

A maximum, proved without calculus: of all the deficient parallelograms on a line, the one on the half is the greatest.

ABCD
38 lines and circles drawn, of which 20 helper constructions drew the fainter ones

Every step, checked

What it needs, and what needs it

Needs: I.10 II.5 VI.23

Used by: VI.28

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

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

What it takes on trust

The proposition as code

@proposition(
    "VI.27",
    THEOREM,
    sample=_deficient_application,
    note="A maximum, proved without calculus: of all the deficient parallelograms "
    "on a line, the one on the half is the greatest.",
)
def prop_VI_27(a: Point, b: Point, part) -> Out:
    """Parallelograms on AB deficient by a figure similar to that on the half."""
    hypothesis("A and B are distinct", a != b)
    hypothesis("the application is a proper one", sign(part) > 0 and sign(1 - part) > 0, guard=True)
    line(a, b, "the given line AB")
    middle = posit(prop_I_10(a, b).midpoint, "C")

    # Applying to AD leaves a defect similar to the one on the half, so the
    # parallelogram is as AD by DB -- greatest when the two are equal.
    d = posit(_along(a, b, part), "D")
    across = (-(b.y - a.y), b.x - a.x)
    applied = _parallelogram_on(a, d, Point(a.x + across[0] / 2, a.y + across[1] / 2))
    on_half = _parallelogram_on(a, middle, Point(a.x + across[0] / 2, a.y + across[1] / 2))
    outline(*applied)
    outline(*on_half)

    because(prop_VI_23, applied[0], applied[1], applied[3],
            on_half[0], on_half[1], on_half[3])

    claim("each applied parallelogram is as the rectangle contained by the "
          "segments it leaves", "VI.23",
          _area(*applied) == length(a, d) * length(a, b) / 2
          and _area(*on_half) == length(a, middle) * length(a, b) / 2)
    # The maximum is the whole content, so it is tested against the whole line
    # rather than against the one position that happened to be sampled.
    elsewhere = [_along(a, b, Fraction(k, 12)) for k in range(1, 12)]
    claim("and that on the half is not less than any other applied to the line",
          "II.5",
          all(sign(length(a, middle) * length(middle, b)
                   - length(a, point) * length(point, b)) >= 0
              for point in elsewhere + [d]))
    because(prop_II_5, a, d, b)

    claim("with equality only when the application is to the half itself", "II.5",
          all(point == middle
              or sign(length(a, middle) * length(middle, b)
                      - length(a, point) * length(point, b)) > 0
              for point in elsewhere))
    return Out(greatest=on_half)