Book VI · Proposition 14

VI.14

In equal and equiangular parallelograms the sides about the equal angles are reciprocally proportional; and equiangular parallelograms in which the sides about the equal angles are reciprocally proportional are equal.Heath, 1908

'Reciprocally proportional' is Euclid's way of saying the product of the sides is fixed -- an area law written entirely in ratios.

ABDPQS
8 lines and circles drawn

Every step, checked

What it needs, and what needs it

Needs: VI.1

Used by: VI.15 VI.16

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

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

What it takes on trust

Nothing. It draws no intersections and reads nothing off the picture.

The proposition as code

@proposition(
    "VI.14",
    THEOREM,
    sample=lambda rng: _two_parallelograms(rng, equal=True),
    note="'Reciprocally proportional' is Euclid's way of saying the product of "
    "the sides is fixed -- an area law written entirely in ratios.",
)
def prop_VI_14(a: Point, b: Point, d: Point, p: Point, q: Point, s: Point) -> Out:
    """Two equiangular parallelograms, on sides AB, AD and PQ, PS."""
    hypothesis("neither parallelogram is degenerate",
               not collinear(a, b, d) and not collinear(p, q, s))
    hypothesis("they are equiangular", eq_angle(b, a, d, q, p, s))
    first = _parallelogram_on(a, b, d)
    second = _parallelogram_on(p, q, s)
    outline(*first)
    outline(*second)
    hypothesis("the parallelograms are equal", _area(*first) == _area(*second))

    # Euclid places the two so that DB is in a straight line with BE, which puts
    # them vertically opposite about B, and only then is there a figure for VI.1
    # to speak of. Carrying the second one over is a rigid motion between
    # segments of unequal length, and its cosine is a quotient of two square
    # roots -- outside the field the rest of the figure lives in. VI.23 stands on
    # the same ground. Executing this wants VI.1 stated for parallelograms as
    # well as triangles, and the juxtaposition built rather than assumed.

    claim("the sides about the equal angles are reciprocally proportional -- "
          "AB is to PQ as PS is to AD", "VI.1",
          length(a, b) * length(a, d) == length(p, q) * length(p, s))
    claim("and the reciprocal proportion in turn makes them equal", "VI.1",
          (length(a, b) * length(a, d) == length(p, q) * length(p, s))
          == (_area(*first) == _area(*second)))
    return Out(parallelograms=(first, second))