Book XI · Proposition 29
Parallelepipedal solids which are on the same base and of the same height, and in which the extremities of the sides which stand up are on the same straight lines, are equal to one another.Heath, 1908
Used by: XI.30
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, XI.Def.3, XI.Def.8
Depth: 12 steps of argument above the first principles. Parallel postulate: needed.
Nothing. It draws no intersections and reads nothing off the picture.
@proposition("XI.29", THEOREM, sample=samples3.corner_and_arms)
def prop_XI_29(o: Point3, a: Point3, b: Point3, c: Point3) -> Out:
"""Parallelepipeds on the same base and of the same height, whose standing
sides end on the same straight lines, are equal."""
hypothesis("the three arms are not in one plane", not coplanar(o, a, b, c))
first = _built(parallelepiped(o, a, b, c, "the first solid"))
# The second stands on the same base and reaches the same plane, its top
# slid along the line the first solid's top edge lies in. That is what "the
# extremities of the sides which stand up are on the same straight lines"
# says, and it is the only freedom the figure has.
slide = vector_between(o, a)
leaned = posit3(Point3(c.x + slide[0], c.y + slide[1], c.z + slide[2]), "M")
second = _built(parallelepiped(o, a, b, leaned, "the second solid"))
line3(c, leaned, "the line the tops end on")
claim("the two solids stand on the same base", "XI.24",
_same_figure(first.face_points(0), second.face_points(0)))
claim("their tops are in one plane, so they are of the same height", "XI.14",
parallel_planes(first.face_plane(1), first.face_plane(0))
and second.face_plane(1) == first.face_plane(1))
claim("and the solids are equal to one another", "XI.29",
content(first) == content(second))
return Out(solids=(first, second))