[1]Ivan Sutherland's landmark program, Sketchpad [Sutherland 65], was a thematic influence for this program. The Geometer's Sketchpad [Jackiw 92] is referred to throughout this paper as GSP.

[2]It is important not to stretch this analogy too thin. Each reapplication of the square function in GSP will constitute a separate program fragment, logically autonomous from other squares. Thus there is no central prototype of a square, only a number of independent clones. In strict programming terms, the square is more of a macro than a subroutine.

[3]It is interesting to note that the behavior of some constraints required heuristics even when driven "forward." Consider the point of intersection between a circle and a segment with one endpoint inside the circle and the other outside. Conventional geometry provides no notion of the identity of this single intersection under a transformation that results in the segment now intersecting the circle in two separate locations.

[4]As the figure illustrates, a script may be recorded interactively by controls akin to a conventional tape deck's. An observed difficulty with interactive recording -- and programming by demonstration in general -- is the user's sense of being "on the spot" while recording; of somehow being responsible for a canonical and error-free demonstration of the program. To address this, GSP also allows users to record scripts from sketches retroactively. Using the Macintosh clipboard mechanism, one may paste a completed sketch into a script window. Thus one is encouraged to construct, test, and modify -- "to hack" -- a sketch before commiting oneself to script.