*Abstract*:
The !GeoGram system generates programs for geometric computations by combining generic software components as speciﬁed
by diagrams constructed using a graphical interface. The user speciﬁes known and desired quantities. As diagrams are constructed,
the system maintains symbolic geometric facts describing the construction. Inferences based on the diagram are used to derive new
facts and to introduce new objects based on geometric reasoning, to
ﬁlter choices presented to the user, to interpret the user’s intention
in ambiguous cases, to detect over-speciﬁcation, and to generate
the program. A knowledge base of descriptions of generic software
components is used to prove that features of the geometry can be
computed from known values. These local proofs are combined to
guide generation of a program that computes the desired values
from inputs. The library of generic geometric program components
is used to generate both in-line code and specialized subroutines;
partial evaluation improves the efﬁciency of the generated code.
The resulting program is automatically translated into the desired
language. The program can also be run interactively to simulate the
geometry by generating graphical traces on the diagram as input
quantities are varied.