Book XI · Proposition 31

XI.31

Parallelepipedal solids which are on equal bases and of the same height are equal to one another.Heath, 1908

Every step, checked

What it needs, and what needs it

Needs: I.35 XI.14 XI.30

Used by: XI.32 XI.34

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.10, XI.Def.3, XI.Def.8

Depth: 14 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("XI.31", THEOREM, sample=samples3.corner_and_arms)
def prop_XI_31(o: Point3, a: Point3, b: Point3, c: Point3) -> Out:
    """Parallelepipeds on equal bases and of the same height 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"))
    # A second base in the same plane, of the same area but not the same figure:
    # one side doubled and the other halved leaves the parallelogram on them
    # equal to the first, which is I.35 and I.36 done with the arms themselves.
    stretched = posit3(_along(o, a, Fraction(2)), "P")
    shrunk = posit3(_along(o, b, Fraction(1, 2)), "Q")
    second = _built(parallelepiped(o, stretched, shrunk, c, "the second solid"))

    because(prop_XI_30, o, a, b, c)

    claim("the two bases are equal, and are not the same figure", "I.35",
          _base_area(o, a, b) == _base_area(o, stretched, shrunk)
          and not _same_figure(first.face_points(0), second.face_points(0)))
    claim("the bases are in one plane and the tops in one plane, so the heights "
          "are the same", "XI.14",
          first.face_plane(0) == second.face_plane(0)
          and first.face_plane(1) == second.face_plane(1))
    claim("and the solids are equal to one another", "XI.31",
          content(first) == content(second))
    return Out(solids=(first, second))