Book XI · Proposition 15
If two straight lines meeting one another be parallel to two straight lines meeting one another, not being in the same plane, the planes through them are parallel.Heath, 1908
Needs: nothing earlier.
Used by: XI.25
Rests on: XI.Def.8
Depth: 0 steps of argument above the first principles. Parallel postulate: not needed.
@proposition("XI.15", THEOREM, sample=samples3.tetrahedron)
def prop_XI_15(o: Point3, a: Point3, b: Point3, c: Point3) -> Out:
"""Two pairs of meeting lines, parallel each to each, lie in parallel planes."""
hypothesis("the arms are not in one plane", not coplanar(o, a, b, c))
hypothesis("neither pair is in a straight line", not collinear3(o, a, b))
step = vector_between(o, c)
away = posit3(Point3(o.x + step[0], o.y + step[1], o.z + step[2]), "D")
far_a = posit3(Point3(a.x + step[0], a.y + step[1], a.z + step[2]), "E")
far_b = posit3(Point3(b.x + step[0], b.y + step[1], b.z + step[2]), "F")
for pair in ((o, a), (o, b), (away, far_a), (away, far_b)):
line3(*pair)
first = plane_through(o, a, b, "the plane of the first pair")
second = plane_through(away, far_a, far_b, "the plane of the second")
hypothesis("the two pairs are not in one plane", first != second)
claim("the arms are parallel, each to each", "XI.Def.8",
_parallel3(Line3.through(o, a), Line3.through(away, far_a))
and _parallel3(Line3.through(o, b), Line3.through(away, far_b)))
claim("so the planes through them are parallel", "XI.15",
parallel_planes(first, second))
return Out(planes=(first, second))