Book VI · Proposition 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.
Needs: VI.1
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.
Nothing. It draws no intersections and reads nothing off the picture.
@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))