Book XII · Proposition 7

XII.7

Any prism which has a triangular base is divided into three pyramids equal to one another which have triangular bases.Heath, 1908

Every step, checked

What it needs, and what needs it

Needs: XII.5

Used by: XII.10

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.12, XI.Def.13, XI.Def.9

Depth: 18 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("XII.7", THEOREM, sample=samples3.polygon_base)
def prop_XII_7(a: Point3, b: Point3, c: Point3, d: Point3) -> Out:
    """A prism on a triangular base divides into three equal pyramids on
    triangular bases."""
    hypothesis("the four points are not in one plane", not coplanar(a, b, c, d))
    step = vector_between(a, d)
    whole = _drawn(prism((a, b, c), step, "the prism"))
    top = whole.vertices[3:]
    pieces = (pyramid((a, b, c), top[0], "the first pyramid"),
              pyramid((b, c, top[0]), top[2], "the second"),
              pyramid((b, top[0], top[1]), top[2], "the third"))
    for piece in pieces:
        _drawn(piece)

    because(prop_XII_5, a, b, c, d)

    held = [content(piece) for piece in pieces]
    claim("the three pyramids have triangular bases", "XI.Def.12",
          all(len(piece.faces) == 4 for piece in pieces))
    claim("they are equal to one another", "XII.7", held[0] == held[1] == held[2])
    claim("and together they are the prism", "XII.7",
          held[0] + held[1] + held[2] == content(whole))
    return Out(pyramids=pieces, prism=whole)