Artifact 7def30cf129ba680101f2dcfa33a525c8579068a347d2595bb03838edbac10a1:
- Executable file
r37/packages/geometry/geometry.tex
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 62578) [annotate] [blame] [check-ins using] [more...]
- Executable file
r38/packages/geometry/geometry.tex
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 62578) [annotate] [blame] [check-ins using]
\documentclass{article} \title{\geo\ : A Small Package for Mechanized (Plane) Geometry Manipulations\\[20pt] Version 1.1} \author{Hans-Gert Gr\"abe, Univ. Leipzig, Germany} \date{September 7, 1998} \newenvironment{code}{\tt \begin{tabbing} \hspace*{1cm}\=\hspace*{1cm}\=\hspace*{1cm}\= \hspace*{1cm}\=\hspace*{1cm}\=\kill }{\end{tabbing}} \newcommand{\formel}[1]{\[\begin{array}{l} #1\end{array}\]} \newcommand{\iks}{{\bf x}} \newcommand{\uhh}{{\bf u}} \newcommand{\vau}{{\bf v}} \newcommand{\geo}{{\sc Geometry}} \newcommand{\gr}{{Gr\"obner}} \newcommand{\xxyy}[2] {\noindent{\tt #1} \\\hspace*{1cm} \parbox[t]{9cm}{#2} \\[6pt]} \begin{document} \maketitle \section{Introduction} Geometry is not only a part of mathematics with ancient roots but also a vivid area of modern research. Especially the field of geometry, called by some negligence ``elementary'', continues to attract the attention also of the great community of leisure mathematicians. This is probably due to the small set of prerequisites necessary to formulate the problems posed in this area and the erudition and non formal approaches ubiquitously needed to solve them. Examples from this area are also an indispensable component of high school mathematical competitions of different levels upto the International Mathematics Olympiad (IMO) \cite{IMO}. \medskip The great range of ideas involved in elementary geometry theorem proving inspired mathematicians to search for a common toolbox that allows to discover such geometric statements or, at least, to prove them in a more unified way. These attempts again may be traced back until ancient times, e.g., to Euclid and his axiomatic approach to geometry. Axiomatic approaches are mainly directed towards the introduction of coordinates that allow to quantify geometric statements and to use the full power of algebraic and even analytic arguments to prove geometry theorems. Different ways of axiomatization lead to different, even non-commutative, {\em rings of scalars}, the basic domain of coordinate values, see \cite{Wu:94}. Taking rational, real or even complex coordinates for granted (as we will do in the following) it turns out that geometry theorems may be classified due to their symmetry group as statements in, e.g., projective, affine or Euclidean (Cartesian) geometry. Below such a distinction will be important for the freedom to choose appropriate coordinate systems. \medskip It may be surprising that tedious but mostly straightforward manipulations of the algebraic counterparts of geometric statements allow to prove many theorems in geometry with even ingenious ``true geometric'' proofs. With the help of a Computer Algebra System supporting algebraic manipulations this approach obtains new power. The method is not automatic, since one often needs a good feeling how to encode a problem efficiently, but mechanized in the sense that one can develop a tool box to support this encoding and some very standard tools to derive a (mathematically strong~!) proof from these encoded data. The attempts to algorithmize this part of mathematics found their culmination in the 80's in the work of W.-T. Wu \cite{Wu:94} on ``the Chinese Prover'' and the fundamental book \cite{Chou:88} of S.-C. Chou who proved 512 geometry theorems with this mechanized method, see also \cite{Chou:84}, \cite{Chou:90}, \cite{Wu:84a}, \cite{Wu:84b}. Since the geometric interpretation of algebraic expressions depends heavily on the properties of the field of scalars, we get another classification of geometry theorems: Those with coordinate version valid over the algebraically closed field ${\bf C}$ and those with coordinate version valid (or may be even formulated) only over ${\bf R}$. The latter statements include {\em ordered geometry}, that uses the distinction between ``inside'' and ``outside'', since ${\bf C}$ doesn't admit monotone orderings. \medskip This package \geo, written in the algebraic mode of Reduce, should provide the casual user with a couple of procedures that allow him/her to mechanize his/her own geometry proofs. Together with the Reduce built-in simplifier for rational functions, the {\tt solve} function, and the \gr\ utilities\footnote{Unfortunately, the built in \gr\ package of Reduce doesn't admit enough flexibility for our purposes.} of the author's package CALI \cite{CALI} (part of the Reduce library) it allows for proving a wide range of theorems of unordered geometry, see the examples below and in the test file {\tt geometry.tst}. This package grew up from a course of lectures for students of computer science on this topic held by the author at the Univ. of Leipzig in fall 1996 and was updated after a similar lecture in spring 1998. \section{Mechanizing Geometry Proving} Most geometric statements are of the following form: \begin{quote} Given certain (more or less) arbitrarily chosen points and/or lines we construct certain derived points and lines from them. Then the (relative) position of these geometric objects is of a certain specific kind regardless of the (absolute) position of the chosen data. \end{quote} To obtain evidence for such a statement (recommended before attempting to prove it~!) one makes usually one or several drawings, choosing the independent data appropriately and constructing the dependent ones out of them (best with ruler and compass, if possible). A computer may be helpful in such a task, since the constructions are purely algorithmic and computers are best suited for algorithmic tasks. Given appropriate data structures such construction steps may be encoded into {\em functions} that afterwards need only to be called with appropriate parameters. Even more general statements may be transformed into such a form and must be transformed to create drawings. This may sometimes involve constructions that can't be executed with ruler and compass as, e.g., angle trisection in Morley's theorem or construction of a conic in Pascal's theorem. \subsection{Algorithmization of (plane) geometry} The representation of geometric objects through coordinates is best suited for both compact (finite) data encoding and regeometrization of derived objects, e.g., through graphic output. Note that the target language for realization of these ideas on a computer can be almost every computer language and is not restricted to those supporting symbolic computations. Different geometric objects may be collected into a {\em scene}. Rapid graphic output of such a scene with different parameters may be collected into animations or even interactive drag-and-move pictures if supported by the programming system. (All this is not (yet) supported by \geo.) \medskip We will demonstrate this approach on geometric objects, containing points and lines, represented as pairs {\tt P:Point=$(p_{1},p_{2})$} or tripels {\tt g:Line=$(g_{1}, g_{2}, g_{3})$} of a certain basic type {\tt Scalar}, e.g., floating point reals. Here $g$ represents the homogeneous coordinates of the line $\{(x,y)\, :\, g_{1}x + g_{2}y + g_{3}=0\}$. In this setting geometric constructions may be understood as functions constructing new geometric objects from given ones. Implementing such functions variables occur in a natural way as formal parameters that are assigned with special values of the correct type during execution. \medskip 1) For example, the equation \[(x-p_{1})(q_{2}-p_{2}) - (y-p_{2})(q_{1}-p_{1})=0\] of the line through two given points $P=(p_{1},p_{2}),\, Q=(q_{1},q_{2})$ yields the function \begin{code} pp\_line(P,Q:Point):Line == $(q_{2}-p_{2},p_{1}-q_{1},p_{2}q_{1}-p_{1}q_{2})$ \end{code} that returns the (representation of the) line through these two points. In this function $P$ and $Q$ are neither special nor general points but formal parameters of type {\tt Point}. 2) The (coordinates of the) intersection point of two lines may be computed solving the corresponding system of linear equations. We get a partially defined function, since there is no or a not uniquely defined intersection point, if the two lines are parallel. In this case our function terminates with an error message. \begin{code} intersection\_point(a,b:Line):Point == \+\\ d:=$a_{1}b_{2}-a_{2}b_{1}$;\\ if $d=0$ then error ``Lines are parallel''\\ else return $((a_{2}b_{3}-a_{3}b_{2})/d,(a_{3}b_{1}-a_{1}b_{3})/d)$ \end{code} Again $a$ and $b$ are formal parameters, here of the type {\tt Line}. 3) In the same way we may define a line $l$ through a given point $P$ perpendicular to a second line $a$ as \begin{code} lot(P:Point,a:Line):Line == $(a_{2},-a_{1},a_{1}p_{2}-a_{2}p_{1})$ \end{code} and a line through $P$ parallel to $a$ as \begin{code} par(P:Point,a:Line):Line == $(a_{1},a_{2},-a_{1}p_{1}-a_{2}p_{2})$ \end{code} 4) All functions so far returned objects with coordinates being rational expressions in the input parameters, thus especially well suited for algebraic manipulations. To keep this nice property we introduce only the {\em squared Euclidean distance} \begin{code} sqrdist(P,Q:Point):Scalar == $(p_{1}-q_{1})^{2}+(p_{2}-q_{2})^{2}$ \end{code} 5) Due to the relative nature of geometric statements some of the points and lines may be chosen arbitrarily or with certain restrictions. Hence we need appropriate constructors for points and lines given by their coordinates \begin{code} Point(a,b:Scalar):Point == $(a,b)$\\ Line(a,b,c::Scalar):Line == $(a,b,c)$ \end{code} and also for a point on a given line. For this purpose we provide two different functions \begin{code} choose\_Point(a:Line,u:Scalar):Point == \+\\ if $a_{2}=0$ then\+\\ if $a_{1}=0$ then error ``a is not a line''\\ else return $(-a_{3}/a_{1},u)$\-\\ else return $(u,-(a_{3}+a_1\,u)/a_{2})$ \end{code} that chooses a point on a line $a$ and \begin{code} varPoint(P,Q:Point,u:Scalar):Point == $(u\,a_{1}+(1-u)\,b_{1},u\,a_{2}+(1-u)\,b_{2})$ \end{code} that chooses a point on the line through two given points. The main reason to have also the second definition is that $u$ has a well defined geometric meaning in this case. For example, the midpoint of $PQ$ corresponds to $u={1\over 2}$: \begin{code} midPoint(P,Q:Point):Point == varPoint(P,Q,1/2) \end{code} 6) One can compose these functions to get more complicated geometric objects as, e.g., the pedal point of a perpendicular \begin{code} pedalPoint(P:Point,a:Line):Point == intersection\_point(lot(P,a),a), \end{code} the midpoint perpendicular of $BC$ \begin{code} mp(B,C:Point):Line == lot(midPoint(B,C),line(B,C)), \end{code} the altitude to $BC$ in the triangle $\Delta\,ABC$ \begin{code} altitude(A,B,C:Point):Line == lot(A,line(B,C)) \end{code} and the median line \begin{code} median(A,B,C:Point):Line == line(A,midPoint(B,C)) \end{code} 7) We can also test geometric conditions to be fulfilled, e.g., whether two lines $a$ and $b$ are parallel or orthogonal \begin{code} parallel(a,b:Line):Boolean == $(a_{1}b_{2}-a_{2}b_{1}=0)$ \end{code} resp. \begin{code} orthogonal(a,b:Line):Boolean == $(a_{1}b_{1}+a_{2}b_{2}=0)$ \end{code} or whether a given point is on a given line \begin{code} point\_on\_line(P:Point,a:Line):Boolean == $(a_{1}p_{1}+a_{2}p_{2}+a_{3}=0)$ \end{code} The corresponding procedures implemented in the package return the value of the expression to be equated to zero instead of a boolean. Even more complicated conditions may be checked as, e.g., whether three lines have a point in common or whether three points are on a common line. For a complete collection of the available procedures we refer to the section \ref{description}. \medskip Note that due to the linearity of points and lines all procedures considered so far return data with coordinates that are rational in the input parameters. One can easily enlarge the ideas presented in this section to handle also non linear objects as circles and angles, compute intersection points of circles, tangent lines etc., if the basic domain {\tt Scalar} admits to solve non-linear (mainly quadratic) equations. Since non-linear equations usually have more than one solution, branching ideas should be incorporated, too. For example, intersecting a circle and a line the program should consider both intersection points. \subsection{Mechanized evidence of geometric statements} With a computer and these prerequisites at hand one may obtain evidence of geometric statements not only from plots but also computationally, converting the statement to be checked into a function depending on the variable coordinates as parameters and plugging in different values for them. For example, the following function tests whether the three midpoint perpendiculars in a triangle given by the coordinates of its vertices $A,B,C$ pass through a common point \begin{code} test(A,B,C:Point):Boolean ==\\\>\>\> concurrent(mp(A,B,C),mp(B,C,A),mp(C,A,B)) \end{code} Plugging in different values for $A,B,C$ we can verify the theorem for many different special geometric configurations. Of course this is not yet a {\bf proof}. \medskip Lets add another remark: {\tt Point} and {\tt Line} are not only the basic data types of our geometry, but data type functions parametrized by the data type {\tt Scalar}. To have the full functionality of our procedures {\tt Scalar} must be a field with effective zero test. \section{Geometry Theorems of Constructive Type} Implementing the functions described above in a system, that admits also symbolic computations, we can execute the same computations also with symbolic values, i.e. taking a pure transcendental extension of ${\bf Q}$ as scalars. The procedures then return (simplified) symbolic expressions that specialize under (almost all) substitutions of ``real'' values for these symbolic ones to the same values as if they were computed by the original procedures with the specialized input. This leads to the notion of {\em generic geometric configurations}. A geometric statement holds in this generic configuration, i.e., the corresponding symbolic expression simplifies to zero, if and only if it is ``generically true'', i.e., holds for all special coordinate values except degenerate ones. \subsection{Geometric configurations of constructive type} This approach is especially powerful, if all geometric objects involved into a configuration may be constructed step by step and have {\em rational} expressions in the algebraically independent variables as symbolic coordinates. \medskip {\sc Definition: } We say that a geometric configuration is of {\em constructive type}\footnote{This notion is different from \cite{Chou:88}.}, if its generic configuration may be constructed step by step in such a way, that the coordinates of each successive geometric object may be expressed as rational functions of the coordinates of objects already available or algebraically independent variables, and the conclusion may be expressed as vanishing of a rational function in the coordinates of the available geometric objects. \medskip Substituting the corresponding rational expressions of the coordinates of the involved geometric objects into the coordinate slots of newly constructed objects and finally into the conclusion expression, we obtain successively rational expressions in the given algebraically independent variables. \begin{quote}\it A geometry theorem of constructive type is generically true if and only if (its configuration is not contradictory and) the conclusion expression simplifies to zero. \end{quote} Indeed, if this expression simplifies to zero, the algebraic version of the theorem will be satisfied for all ``admissible'' values of the parameters. If the expression doesn't simplify to zero, the theorem fails for almost all such parameters. Note that due to cancelation of denominators the domain of definition of the simplified expression may be greater than the (common) domain of definition of the different parts of the unsimplified expression. The correct non degeneracy conditions describing ``admissibility'' may be collected during the computation. Collecting up the zero expression indicates, that the geometric configuration is contradictory. Hence the statement, that a certain geometric configuration of constructive type is contradictory, is of constructive type, too. The package \geo\ provides procedures {\tt clear\_ndg(), print\_ndg()} to manage and print these non degeneracy conditions and also a procedure {\tt add\_ndg(d)} as a hook for their user driven management. \subsection{Some one line proofs} Take independent variables $a_1,a_2,b_1,b_2,c_1,c_2$ and \begin{code} A:=Point(a1,a2);\ B:=Point(b1,b2);\ C:=Point(c1,c2); \end{code} as the vertices of a generic triangle. We can prove the following geometric statements about triangles computing the corresponding (compound) symbolic expressions and proving that they simplify to zero. Note that Reduce does simplification automatically. \medskip \noindent 1) The midpoint perpendiculars of $\Delta\,ABC$ pass through a common point since \begin{code}\+\> concurrent(mp(A,B),mp(B,C),mp(C,A)); \end{code} simplifies to zero. \medskip \noindent 2) The intersection point of the midpoint perpendiculars \begin{code}\+\> M:=intersection\_point(mp(A,B),mp(B,C)); \end{code} is the center of the circumscribed circle since \begin{code}\+\> sqrdist(M,A) - sqrdist(M,B); \end{code} simplifies to zero. \medskip \noindent 3) {\em Euler's line}: \begin{quote} The center $M$ of the circumscribed circle, the orthocenter $H$ and the barycenter $S$ are collinear and $S$ divides $MH$ with ratio 1:2. \end{quote} Compute the coordinates of the corresponding points \begin{code}\+\> M:=intersection\_point(mp(a,b,c),mp(b,c,a));\\ H:=intersection\_point(altitude(a,b,c),altitude(b,c,a));\\ S:=intersection\_point(median(a,b,c),median(b,c,a)); \end{code} and then prove that \begin{code}\+\> collinear(M,H,S);\\ sqrdist(S,varpoint(M,H,2/3)); \end{code} both simplify to zero. \medskip \noindent 4) {\em Feuerbach's circle}: \begin{quote} The midpoint $N$ of $MH$ is the center of a circle that passes through nine special points, the three pedal points of the altitudes, the midpoints of the sides of the triangle and the midpoints of the upper parts of the three altitudes. \end{quote} \begin{code}\+\> N:=midpoint(M,H);\\[8pt] sqrdist(N,midpoint(A,B))-sqrdist(N,midpoint(B,C));\\ sqrdist(N,midpoint(A,B))-sqrdist(N,midpoint(H,C));\\[8pt] D:=intersection\_point(pp\_line(A,B),pp\_line(H,C));\\ sqrdist(N,midpoint(A,B))-sqrdist(N,D); \end{code} Again the last expression simplifies to zero thus proving the theorem. \section{Non-linear Geometric Objects} \geo\ provides several functions to handle angles and circles as non-linear geometric objects. \subsection{Angles and bisectors} (Oriented) angles between two given lines are presented as tangens of the difference of the corresponding slopes. Since \[\tan(\alpha-\beta) = \frac{\tan(\alpha)-\tan(\beta)}{1+ \tan(\alpha)\, \tan(\beta)}\] we get for the angle between two lines $g,h$ \begin{code}\> l2\_angle(g,h:Line):Scalar == $\frac{g_2h_1-g_1h_2}{g_1h_1+g_2h_2}$ \end{code} Note that in unordered geometry we can't distinguish between inner and outer angles. Hence we cannot describe (rationally) the parameters of the angle bisector of a triangle. For a point $P$ the equation \begin{code}\> l2\_angle(pp\_line(A,B),pp\_line(P,B)) =\\\>\>\> l2\_angle(pp\_line(P,B),pp\_line(C,B)) \end{code} i.e., $\angle\,ABP=\angle\,PBC$, describes the condition to be located on either the inner or outer bisector of $\angle\,ABC$. Clearing denominators yields a procedure \begin{code}\> point\_on\_bisector(P,A,B,C) \end{code} that returns on generic input a polynomial of (total) degree 4 and quadratic in the coordinates of $P$ that describes the condition for $P$ to be on (either the inner or the outer) bisector of $\angle\,ABC$. \medskip With some more effort one can also employ such indirect geometric descriptions. For example, we can prove the following unordered version of the bisector intersection theorem. \medskip \noindent 5) There are four common points on the three bisector pairs of a given triangle $\Delta\,ABC$. Indeed, due to Cartesian symmetry we may choose a special coordinate system with origin $A$ and (after scaling) $x$-axes unit point $B$. The remaining point $C$ is arbitrary. Then the corresponding generic geometric configuration is described with two independent parameters $u_1,u_2$ -- the coordinates of $C$: \begin{code}\> A:=Point(0,0); B:=Point(1,0); C:=Point(u1,u2); \end{code} A point {\tt P:=Point(x1,x2)} is an intersection point of three bisectors iff it is a common zero of the polynomial system \begin{code} polys:=\{\>\>\+\+ point\_on\_bisector(P,A,B,C),\\ point\_on\_bisector(P,B,C,A),\\ point\_on\_bisector(P,C,A,B)\}, \end{code} i.e., of the polynomial system \begin{quote} $\hspace*{-2ex}\{\ {x_1}^{2}\,u_2 -2\,x_1\,x_2\,u_1 +2\,x_1\,x_2 -2\,x_1\,u_2 -{x_2}^{2}\,u_2 +2\,x_2\,u_1 -2 \,x_2 +u_2,\\ 2\,{x_1}^{2}\,u_1\,u_2 -{x_1}^{2}\,u_2 -2\,x_1\,x_2\,{u_1}^{2} +2\,x_1\,x_2\,u_1 +2\,x_1\,x_2\,{u_2}^{2} -2\,x_1\,{u_1}^{2}\,u_2 -2\,x_1\,{u_2}^{3} -2\,{x_2}^{2}\,u_1\, u_2 +{x_2}^{2}\,u_2 +2\,x_2\,{u_1}^{3} -2\,x_2\,{u_1}^{2} +2\,x_2\,u_1\,{u_2}^{2} -2\,x_2 \,{u_2}^{2} +{u_1}^{2}\,u_2 +{u_2}^{3},\\ {x_1}^{2}\,u_2 -2\,x_1\,x_2\,u_1 -{x_2}^{2}\,u_2\}$ \end{quote} with indeterminates $x_1,x_2$ over the coefficient field ${\bf Q}(u_1,u_2)$. A \gr\ basis computation with CALI \begin{code}\>\+ load cali;\\ setring(\{$x_1,x_2$\},\{\},lex);\\ setideal(polys,polys);\\ gbasis polys; \end{code} yields the following equivalent system: \begin{quote} $\hspace*{-2ex}\{\ 4\,{x_2}^{4}\,u_2 -8\,{x_2}^{3}\,{u_1}^{2} +8\,{x_2}^{3}\,u_1 -8\,{x_2}^{3}\,{u_2}^{2 } +4\,{x_2}^{2}\,{u_1}^{2}\,u_2 -4\,{x_2}^{2}\,u_1\,u_2 +4\,{x_2}^{2}\,{u_2}^{3} -4\,{ x_2}^{2}\,u_2 +4\,x_2\,{u_2}^{2} -{u_2}^{3},\\ 2\,x_1\,u_1\,{u_2}^{2} -x_1\,{u_2}^{2} +2\,{ x_2}^{3}\,u_2 -4\,{x_2}^{2}\,{u_1}^{2} +4\,{x_2}^{2}\,u_1 -2\,{x_2}^{2}\,{u_2}^{2} -2\, x_2\,{u_1}^{2}\,u_2 +2\,x_2\,u_1\,u_2 -2\,x_2\,u_2 -u_1\,{u_2}^{2} +{u_2}^{2}\} $ \end{quote} The first equation has 4 solutions in $x_2$ and each of them may be completed with a single value for $x_1$ determined from the second equation. Hence the system $polys$ has four generic solutions corresponding to the four expected intersection points. The solutions have algebraic coordinates of degree 4 over the generic field of scalars ${\bf Q}(u_1,u_2)$ and specialize to the correct ``special'' intersection points for almost all values for the parameters $u_1$ and $u_2$. Although it is hard to give an explicit description through radicals of these symbolic values, one can compute with them knowing their minimal polynomials. Since in this situation $x_2$ is the distance from $P$ to the line $AB$, we can prove that each of the four points has equal distance to each of the 3 lines through two vertices of $\Delta\,ABC$, i.e., that these points are the centers of its incircle and the three excircles. First we compute the differences of the corresponding squared distances \begin{code}\>\+ con1:=sqrdist(P,pedalpoint(p,pp\_line(A,C)))-x2\^{}2;\\ con2:=sqrdist(p,pedalpoint(p,pp\_line(B,C)))-x2\^{}2; \end{code} The numerator of each of these two expressions should simplify to zero under the special algebraic values of $x_1,x_2$. This may be verified computing their normal forms with respect to the above \gr\ basis: \begin{code}\>\+ con1 mod gbasis polys;\\ con2 mod gbasis polys; \end{code} Note that \cite{Wu:94} proposes also a constructive proof for the bisector intersection theorem: Start with $A,B$ and the intersection point $P$ of the bisectors through $A$ and $B$. Then $g(AC)$ and $g(BC)$ are symmetric to $g(AB)$ wrt.\ $g(AP)$ and $g(BP)$ and $P$ must be on their bisector: \begin{code}\>\+ A:=Point(0,0); B:=Point(1,0); P:=Point(u1,u2);\\ l1:=pp\_line(A,B);\\ l2:=symline(l1,pp\_line(A,P));\\ l3:=symline(l1,pp\_line(B,P));\\[6pt] point\_on\_bisector(P,A,B,intersection\_point(l2,l3)); \end{code} As desired the last expression simplifies to zero. \subsection{Circles} The package \geo\ supplies two different types for encoding circles. The first type is {\tt Circle1} that stores the pair $(M,s)$, the center and the squared radius of the circle. The implementation of {\tt point\_on\_circle1(P,c)} and \linebreak {\tt p3\_circle1(A,B,C)} is almost straightforward. The latter function finds the circle through 3 given points, computing its center as the intersection point of two midpoint perpendiculars. For purposes of analytic geometry it is often better to work with the representation {\tt Circle} derived from the description of the circle as the set of points $(x,y)$ for which the expression \[(x-m_1)^2+(y-m_2)^2-r^2 = (x^2+y^2) -2\,m_1\,x -2\,m_2\,y +m_1^2+m_2^2-r^2 \] vanishes. We use homogeneous coordinates {\tt k:Circle} $=(k_1,k_2,k_3,k_4)$ for the circle \[k:=\{\,(x,y)\ :\ k_1*(x^2+y^2)+k_2*x+k_3*y+k_4 = 0\}\] since they admit denominator free computations and include also lines as special circles with infinite radius: The line $g=(g_1,g_2,g_3)$ is the circle $(0,g_1,g_2,g_3)$. Its easy to derive formulas {\tt circle\_center(k)} for the center of the circle $k$ and {\tt circle\_sqradius(k)} for its squared radius. It is also straightforward to test {\tt point\_on\_circle(P,k)}. The parameters of the circle {\tt p3\_circle(A,B,C)} through 3 given points \begin{code}\> A:=Point($a_1,a_2$); B:=Point($b_1,b_2$); C=Point($c_1,c_2$); \end{code} may be obtained from a nontrivial solution of the corresponding homogeneous linear system with coefficient matrix \[\left(\begin{array}{cccc} a_1^2+a_2^2 & a_1 & a_2 & 1 \\ b_1^2+b_2^2 & b_1 & b_2 & 1 \\ c_1^2+c_2^2 & c_1 & c_2 & 1 \\ \end{array}\right) \] The condition that 4 points are on a common circle then may be expressed as \begin{code}\> p4\_circle(A,B,C,D) == point\_on\_circle(D,p3\_circle(A,B,C)); \end{code} For generic points $A,B,C,D$ this yields a polynomial $p_4$ of degree 4 in their coordinates. Note that this condition is equivalent to the circular angle theorem: For generic points $A,B,C,D$ \begin{code}\+\> u:=angle(pp\_line(A,D),pp\_line(B,D));\\ v:=angle(pp\_line(A,C),pp\_line(B,C));\\ (num(u)*den(v)-den(u)*num(v)); \end{code} yields the same condition $p_4$. The common denominator {\tt den(u)*den(v)} corresponds to the degeneracy condition that either $A,B,C$ or $A,B,D$ are collinear. \medskip This condition is also equivalent to {\em Ptolemy's theorem}: \begin{quote} For points $A,B,C,D$ are (in that order) on a circle iff \[l(AB)*l(CD)+l(AD)*l(BC) = l(AC)*l(BD),\] i.e., the sum of the products of the lengths of opposite sides of the cyclic quadrilateral $ABCD$ equals the product of the lengths of its diagonals. \end{quote} For an elementary proof see \cite[2.61]{Coxeter:67}. To get a mechanized proof with the tools developed so far we are faced with several problems. First the theorem invokes distances and not their squares. Second the theorem uses the order of the given points. Unordered geometry can't even distinguish between sides and diagonals of a quadrilateral. The fist problem may be solved by repeated squaring. Denoting the lengths appropriately we get step by step \[\begin{array}{c} p\cdot r + q\cdot s = t\cdot u\\ (p\,r)^2+(q\,s)^2-(t\,u)^2 = -(2\,p\,q\,r\,s)\\ ((p\,r)^2+(q\,s)^2-(t\,u)^2)^2 - (2\,p\,q\,r\,s)^2 = 0 \end{array}\] arriving at an expression that contains only squared distances. This expression \[{\tt poly:= }\ p^4\,r^4 - 2\,p^2\,q^2\,r^2\,s^2 - 2\,p^2\,r^2\,t^2\,u^2 + q^4\,s^4 - 2\,q^2\, s ^2\,t^2\,u^2 + t^4\,u^4 \] is symmetric in pairs of opposite sides thus solving also the second problem. Substituting the corresponding squared distances of generic points $A,B,C,D$ we obtain exactly the square of the condition $p_4$. \medskip As for bisector coordinates the coordinates of intersection points of a circle and a line generally can't be expressed rationally in terms of the coordinates of the circles. For a generic circle {\tt c:= Circle($c_1,c_2,c_3,c_4$)} and a generic line {\tt d:=Line($d_1,d_2,d_3$)} we may solve the line equation for $y$ and substitute the result into the circle equation to get a single polynomial $q(x)$ of degree 2 with zeroes being the $x$-coordinate of the two intersection points of {\tt c} and {\tt d}: \begin{code}\>\+ vars:=\{x,y\};\\ polys:=\{c1*(x\^{}2+y\^{}2)+c2*x+c3*y+c4, d1*x+d2*y+d3\};\\ s:=solve(second polys,y);\\ q:=num sub(s,first polys); \end{code} $q:={x}^{2}\,c_1\,({d_1}^{2} +{d_2}^{2}) +x\,(2\,c_1\,d_1\,d_3 + c_2\,{d_2}^{2} -c_3\,d_1\,d_2 ) +(c_1\,{d_3}^{2} -c_3\,d_2\,d_3 +c_4\,{d_2}^{2})$ \medskip In many cases {\tt d} is the line through a specified point {\tt P:= Point($p_1,p_2$)} on the circle. Fixing these coordinates as generic ones we get the algebraic relations \begin{code}\> polys:=\{point\_on\_line(P,d), point\_on\_circle(P,c)\}; \end{code} \formel{\{d_1\,p_1 +d_2\,p_2 +d_3, c_1\,{p_1}^{2} +c_1\,{p_2}^{2} +c_2\,p_1 +c_3\,p_2 +c_4\}} between the coordinates of $c, d$ and $P$. This dependency may be removed solving these equations for $d_3$ and $c_4$. In the new coordinates the polynomial $q(x)$ factors \begin{code}\>\+ s:=solve(polys,\{d3,c4\});\\ factorize sub(s,q); \end{code} into $x-p_1$ and a second factor that is linear in $x$. This yields the coordinates for the intersection point of {\tt c} and {\tt d} different from {\tt P} that are saved into a function {\tt other\_cl\_point(P,c,d)}. Similarly we computed the coordinates of the second intersection point of two circles $c_1$ and $c_2$ passing through a common point {\tt P} and saved into a function {\tt other\_cc\_point(P,c1,c2)}. Also conditions on the coordinates of a circle and a line resp.\ two circles to be tangent may be derived in a similar way. \medskip \noindent 6) These functions admit a constructive proof of {\em Miquels theorem}: \begin{quote} Let $\Delta\,ABC$ be a triangle. Fix arbitrary points $P,Q,R$ on the sides $AB, BC, AC$. Then the three circles through each vertex and the chosen points on adjacent sides pass through a common point. \end{quote} Take as above \begin{code}\> A:=Point(0,0); B:=Point(1,0); C:=Point(c1,c2); \end{code} Generic points on the sides may be introduced with three auxiliary indeterminates: \begin{code}\>\+ P:=choose\_pl(pp\_line(A,B),u1);\\ Q:=choose\_pl(pp\_line(B,C),u2);\\ R:=choose\_pl(pp\_line(A,C),u3); \end{code} Then \begin{code}\> X:=other\_cc\_point(P,p3\_circle(A,P,R),p3\_circle(B,P,Q)); \end{code} is the intersection point of two of the circles different from {\tt P} (its generic coordinates contain 182 terms) and since \begin{code}\> point\_on\_circle(X,p3\_circle(C,Q,R)); \end{code} simplifies to zero the third circle also passes through {\tt X}. \section{Geometry Theorems of Equational Type} As already seen in the last section non-linear geometric conditions are best given through implicit polynomial dependency conditions on the coordinates of the geometric objects. In this more general setting a geometric statement may be translated into a {\em generic geometric configuration}, involving different geometric objects with coordinates depending on (algebraically independent) variables $\vau = (v_1, \ldots, v_n)$, a system of {\em polynomial conditions} $F= \{f_1, \ldots, f_r\}$ expressing the implicit geometric conditions and a polynomial $g$ encoding the geometric conclusion, such that, for a certain polynomial non degeneracy condition $h$, the following holds: \begin{quote}\it The geometric statement is true iff for all non degenerate correct special geometric configurations, i.e., with coordinates, obtained from the generic ones by specialization $v_i\mapsto c_i$ in such a way, that $f({\bf c})=0$ for all $f\in F$ but $h({\bf c})\neq 0$, the conclusion holds, i.e., $g({\bf c})$ vanishes. \end{quote} Denoting by $Z(F)$ the set of zeroes of the polynomial system $F$ and writing $Z(h)=Z(\{h\})$ for short, we arrive at {\em geometry theorems of equational type}, that may be shortly stated in the form \[Z(F)\setminus Z(h) \subseteq Z(g).\] Over an algebraically closed field, e.g. ${\bf C}$, this is equivalent to the ideal membership problem \[g\cdot h\in rad\ I(F),\] where $rad\ I(F)$ is the radical of the ideal generated by $F$. Even if $h$ is unknown a detailed analysis of the different components of the ideal $I(F)$ allows to obtain more insight into the geometric problem. \medskip Note the symmetry between $g$ and $h$ in the latter formulation of geometry theorems. This allows to derive {\em non degeneracy conditions} for a given geometry theorem of equational type from the stable ideal quotient \[h\in rad\ I(F):g^\infty.\] Since every element of this ideal may serve as non degeneracy condition there is no weakest condition among them, if the ideal is not principal. \subsection{Dependent and independent variables} Let $S=R[v_1,\ldots,v_n]$ be the polynomial ring in the given variables over the field of scalars $R$. The polynomial system $F$ describes algebraic dependency relations between these variables in such a way that the values of some of the variables may be chosen (almost) arbitrarily whereas the remaining variables are determined upto a finite number of values by these choices. \medskip A set of variables $\uhh\subset\vau$ is called {\em independent} wrt.\ the ideal $I=I(F)$ iff $I\cap R[\uhh]=(0)$, i.e., the variables are algebraically independent modulo $I$. If $\uhh$ is a maximal subset with this property the remaining variables $\iks=\vau\setminus\uhh$ are called {\em dependent}. Although a maximal set of independent variables may be read off from a \gr\ basis of $I$ there is often a natural choice of dependent and independent variables induced from the geometric problem. $\uhh$ is a maximal independent set of variables iff $F$ has a finite number of solutions as polynomial system in $\iks$ over the generic scalar field $R(\uhh)$. In many cases this may be proved with less effort than computing a \gr\ basis of $I$ over $S$. If $F$ has an infinite number of solutions then $\uhh$ was independent but not maximal. If $F$ has no solution then $\uhh$ was not independent. \subsection{Geometry theorems of linear type} We arrive at a particularly nice situation in the case when $F$ is a non degenerate quadratic linear system of equations in $\iks$ over $R(\uhh)$. Such geometry theorems are called {\em of linear type}. In this case there is a unique (rational) solution $\iks = \iks(\uhh)$ that may be substituted for the dependent variables into the geometric conclusion $g=g(\iks,\uhh)$. We obtain as for geometry theorems of constructive type a rational expression in $\uhh$ and \begin{quote}\it the geometry theorem holds (under the non degeneracy condition $h=det(F)\in R[\uhh]$, where $det(F)$ is the determinant of the linear system $F$) iff this expression simplifies to zero. \end{quote} \noindent 7) As an example consider the {\em theorem of Pappus}: \begin{quote} Let $A,B,C$ and $P,Q,R$ be two triples of collinear points. Then the intersection points $g(AQ)\wedge g(BP), g(AR)\wedge g(CP)$ and $g(BR)\wedge g(CQ)$ are collinear. \end{quote} The geometric conditions put no restrictions on $A,B,P,Q$ and one restriction on each $C$ and $R$. Hence we may take as generic coordinates \begin{code}\>\+ A:=Point(u1,u2); B:=Point(u3,u4); C:=Point(x1,u5);\\ P:=Point(u6,u7); Q:=Point(u8,u9); R:=Point(u0,x2); \end{code} with $u_0,\ldots,u_9$ independent and $x_1,x_2$ dependent, as polynomial conditions \begin{code}\> F:=\{collinear(A,B,C), collinear(P,Q,R)\}; \end{code} and as conclusion \begin{code}\+\+ con:=collinear(\\ intersection\_point(pp\_line(A,Q),pp\_line(P,B)),\\ intersection\_point(pp\_line(A,R),pp\_line(P,C)),\\ intersection\_point(pp\_line(B,R),pp\_line(Q,C))); \end{code} a rational expression with 462 terms. The polynomial conditions are linear in $x_1,x_2$ and already separated. Hence \begin{code}\>\+ sol:=solve(polys,\{x1,x2\});\\ sub(sol,con); \end{code} proves the theorem since the expression obtained from $con$ substituting the dependent variables by their rational expressions in $\uhh$ simplifies to zero. \medskip As for most theorems of linear type the linear system may be solved ``geometrically'' and the whole theorem may be translated into a constructive geometric statement: \begin{code}\>\+ A:=Point(u1,u2); B:=Point(u3,u4);\\ P:=Point(u6,u7); Q:=Point(u8,u9);\\[6pt] C:=choose\_pl(pp\_line(A,B),u5);\\ R:=choose\_pl(pp\_line(P,Q),u0);\\[6pt] con:=collinear(\+\\ intersection\_point(pp\_line(A,Q),pp\_line(P,B)),\\ intersection\_point(pp\_line(A,R),pp\_line(P,C)),\\ intersection\_point(pp\_line(B,R),pp\_line(Q,C))); \end{code} \subsection{Geometry theorems of non-linear type} Lets return to the general situation of a polynomial system $F\subset S$ that describes algebraic dependency relations, a subdivision $\vau=\iks\cup\uhh$ of the variables into dependent and independent ones, and the conclusion polynomial $g(\iks,\uhh)\in S$. The set of zeros $Z(F)$ may be decomposed into irreducible components that correspond to prime components $P_\alpha$ of the ideal $I=I(F)$ generated by $F$ over the ring $S=R[\iks,\uhh]$. Since $P_\alpha\supset I$ the variables $\uhh$ may become dependent wrt.\ $P_\alpha$. Prime components where $\uhh$ remains independent are called {\em generic}, the other components are called {\em special}. Note that each special component contains a non zero polynomial in $R[\uhh]$. Multiplying them all together yields a non degeneracy condition $h=h(\uhh)\in R[\uhh]$ on the independent variables such that a zero $P\in Z(F)$ with $h(P)\neq 0$ necessarily belongs to one of the generic components. Hence they are the ``essential'' components and we say that the geometry theorem is {\em generically true}, when the conclusion polynomial $g$ vanishes on all these generic components. \medskip If we compute in the ring $S'=R(\uhh)[\iks]$, i.e., consider the independent variables as parameters, exactly the generic components remain visible. Indeed, this corresponds to a localization of $S$ by the multiplicative set $R[\uhh]\setminus\{0\}$. Hence the geometry theorem is generically true iff $g\in rad(I)\cdot S'$, i.e. $g$ belongs to the radical of the ideal $I$ in this special extension of $S$. A sufficient condition can be derived from a \gr\ basis $G$ of $F$ with the $\uhh$ variables as parameters: Test whether $g\ mod\ G =0$, i.e., the normal form vanishes. More subtle examples may be analyzed with the \gr\ factorizer or more advanced techniques from the authors package CALI, \cite{CALI}. \medskip \noindent 8) As an application we consider the following nice theorem from \cite[ch. 4, \S\ 2]{Coxeter:67} about Napoleon triangles: \begin{quote} Let $\Delta\,ABC$ be an arbitrary triangle and $P,Q$ and $R$ the third vertex of equilateral triangles erected externally on the sides $BC, AC$ and $AB$ of the triangle. Then the lines $g(AP), g(BQ)$ and $g(CR)$ pass through a common point, the {\em Fermat point} of the triangle $\Delta\,ABC$. \end{quote} A mechanized proof again will be faced with the difficulty that unordered geometry can't distinguish between different sides wrt.\ a line. A straightforward formulation of the geometric conditions starts with independent coordinates for $A,B,C$ and dependent coordinates for $P,Q,R$. W.l.o.g. we may fix the coordinates in the following way: \begin{code}\+\> A:=Point(0,0); B:=Point(0,2); C:=Point(u1,u2);\\ P:=Point(x1,x2); Q:=Point(x3,x4); R:=Point(x5,x6); \end{code} There are 6 geometric conditions for the 6 dependent variables. \begin{code}\+\+ polys:=\{\>\>sqrdist(P,B)-sqrdist(B,C), sqrdist(P,C)-sqrdist(B,C),\\ sqrdist(Q,A)-sqrdist(A,C), sqrdist(Q,C)-sqrdist(A,C),\\ sqrdist(R,B)-sqrdist(A,B), sqrdist(R,A)-sqrdist(A,B)\}; \end{code} \formel{ {x_1}^{2} +{x_2}^{2} -4\,x_2 -{u_1}^{2} -{u_2}^{2} +4\,u_2\\ {x_1}^{2} -2\,x_1\,u_1 +{ x_2}^{2} -2\,x_2\,u_2 +4\,u_2 -4\\ {x_3}^{2} +{x_4}^{2} -{u_1}^{2} -{u_2}^{2}\\ {x_3}^{2} -2\,x_3\,u_1 +{x_4}^{2} -2\,x_4\,u_2\\ {x_5}^{2} +{x_6}^{2} -4\,x_6\\ {x_5}^{2} +{x_6}^{2} -4} These equations may be divided into three groups of two quadratic relations for the coordinates of each of the points $P,Q,R$. Each of this pairs has (only) two solutions, the inner and the outer triangle vertex, since it may easily be reduced to a quadratic and a linear equation, the line equation of the corresponding midpoint perpendicular. Hence the whole system has 8 solutions and by geometric reasons the conclusion \begin{code}\> con:=concurrent(pp\_line(A,P), pp\_line(B,Q), pp\_line(C,R)); \end{code} will hold on at most two of them. Due to the special structure the interreduced polynomial system is already a \gr\ basis and hence can't be split by the \gr\ factorizer. A full decomposition into isolated primes yields four components over $R(\uhh)$, each corresponding to a pair of solutions over the algebraic closure. On one of them the conclusion polynomial reduces to zero thus proving the geometry theorem. \begin{code}\>\+ vars:=\{x1,x2,x3,x4,x5,x6\};\\ setring(vars,\{\},lex);\\ iso:=isolatedprimes polys;\\[6pt] for each u in iso collect con mod u; \end{code} With a formulation as in \cite[p.~123]{Chou:88}, that uses oriented angles, we may force all Napoleon triangles to be erected on the {\em same} side (internally resp.\ externally) and prove a more general theorem as above. Taking isosceles triangles with equal base angles and (due to one more degree of freedom) $x_5$ as independent the conclusion remains valid: \begin{code} polys2:=\{\>\>sqrdist(P,B)-sqrdist(P,C),\+\+\\ sqrdist(Q,A)-sqrdist(Q,C), \\ sqrdist(R,A)-sqrdist(R,B), \\ num(p3\_angle(R,A,B)-p3\_angle(P,B,C)), \\ num(p3\_angle(Q,C,A)-p3\_angle(P,B,C))\};\-\-\\[6pt] sol:=solve(polys2,\{x1,x2,x3,x4,x6\});\\ sub(first sol,con); \end{code} again simplifies to zero. Note that the new theorem is of linear type. \section{The Procedures Supplied by \geo}\label{description} This section contains a short description of all procedures available in \geo. We refer to the data types {\tt Scalar, Point, Line, Circle1} and {\tt Circle} described above. Booleans are represented as extended booleans, i.e.\ the procedure returns a {\tt Scalar} that is zero iff the condition is fulfilled. In some cases also a non zero result has a geometric meaning. For example, {\tt collinear(A,B,C)} returns the signed area of the corresponding parallelogram. \bigskip \xxyy{angle\_sum(a,b:Scalar):Scalar }{Returns $\tan(\alpha+\beta)$, if $a=\tan(\alpha), b=\tan(\beta)$.} \xxyy{altitude(A,B,C:Point):Line }{The altitude from $A$ onto $g(BC)$. } \xxyy{c1\_circle(M:Point,sqr:Scalar):Circle}{The circle with given center and sqradius.} \xxyy{cc\_tangent(c1,c2:Circle):Scalar}{Zero iff $c_1$ and $c_2$ are tangent.} \xxyy{choose\_pc(M:Point,r,u):Point}{Chooses a point on the circle around $M$ with radius $r$ using its rational parametrization with parameter $u$.} \xxyy{choose\_pl(a:Line,u):Point }{Chooses a point on $a$ using parameter $u$.} \xxyy{Circle(c1,c2,c3,c4:Scalar):Circle}{The {\tt Circle} constructor.} \xxyy{Circle1(M:Point,sqr:Scalar):Circle1}{The {\tt Circle1} constructor. } \xxyy{circle\_center(c:Circle):Point}{The center of $c$.} \xxyy{circle\_sqradius(c:Circle):Point}{The sqradius of $c$.} \xxyy{cl\_tangent(c:Circle,l:Line):Scalar}{Zero iff $l$ is tangent to $c$.} \xxyy{collinear(A,B,C:Point):Scalar}{Zero iff $A,B,C$ are on a common line. In general the signed area of the parallelogram spanned by $\vec{AB}$ and $\vec{AC}$. } \xxyy{concurrent(a,b,c:Line):Scalar}{Zero iff $a,b,c$ have a common point.} \xxyy{intersection\_point(a,b:Line):Point}{The intersection point of the lines $a,b$. } \xxyy{l2\_angle(a,b:Line):Scalar}{Tangens of the angle between $a$ and $b$. } \xxyy{Line(a,b,c:Scalar):Line}{The {\tt Line} constructor.} \xxyy{lot(P:Point,a:Line):Line}{The perpendicular from $P$ onto $a$.} \xxyy{median(A,B,C:Point):Line}{The median line from $A$ to $BC$.} \xxyy{midpoint(A,B:Point):Point}{The midpoint of $AB$. } \xxyy{mp(B,C:Point):Line}{The midpoint perpendicular of $BC$.} \xxyy{orthogonal(a,b:Line):Scalar}{zero iff the lines $a,b$ are orthogonal. } \xxyy{other\_cc\_point(P:Point,c1,c2:Circle):Point}{ $c_1$ and $c_2$ intersect at $P$. The procedure returns the second intersection point. } \xxyy{other\_cl\_point(P:Point,c:Circle,l:Line):Point}{$c$ and $l$ intersect at $P$. The procedure returns the second intersection point.} \xxyy{p3\_angle(A,B,C:Point):Scalar}{Tangens of the angle between $\vec{BA}$ and $\vec{BC}$. } \xxyy{p3\_circle(A,B,C:Point):Circle\ {\rm or\ }\\ p3\_circle1(A,B,C:Point):Circle1}{The circle through 3 given points. } \xxyy{p4\_circle(A,B,C,D:Point):Scalar}{Zero iff four given points are on a common circle. } \xxyy{par(P:Point,a:Line):Line}{The line through $P$ parallel to $a$. } \xxyy{parallel(a,b:Line):Scalar}{Zero iff the lines $a,b$ are parallel. } \xxyy{pedalpoint(P:Point,a:Line):Point}{The pedal point of the perpendicular from $P$ onto $a$.} \xxyy{Point(a,b:Scalar):Point}{The {\tt Point} constructor.} \xxyy{point\_on\_bisector(P,A,B,C:Point):Scalar}{Zero iff $P$ is a point on the (inner or outer) bisector of the angle $\angle\,ABC$.} \xxyy{point\_on\_circle(P:Point,c:Circle):Scalar\ {\rm or\ }\\ point\_on\_circle1(P:Point,c:Circle1):Scalar}{Zero iff $P$ is on the circle $c$.} \xxyy{point\_on\_line(P:Point,a:Line):Scalar}{Zero iff $P$ is on the line $a$. } \xxyy{pp\_line(A,B:Point):Line}{The line through $A$ and $B$.} \xxyy{sqrdist(A,B:Point):Scalar}{Square of the distance between $A$ and $B$.} \xxyy{sympoint(P:Point,l:Line):Point}{The point symmetric to $P$ wrt.\ the line $l$.} \xxyy{symline(a:Line,l:Line):Line}{The line symmetric to $a$ wrt.\ the line $l$.} \xxyy{varpoint(A,B:Point,u):Point}{The point $D=u\cdot A+(1-u)\cdot B$. } \noindent \geo\ supplies as additional tools the functions \bigskip \xxyy{extractmat(polys,vars)}{Returns the coefficient matrix of the list of equations $polys$ that are linear in the variables $vars$. } \xxyy{red\_hom\_coords(u:\{Line,Circle\})}{Returns the reduced homogeneous coordinates of $u$, i.e., divides out the content. } \section{More Examples} Here we give a more detailed explanation of some of the examples collected in the test file {\tt geometry.tst} and give a list of exercises. Their solutions can be found in the test file, too. \subsection{Theorems that can be translated into theorems of constructive or linear type} There are many geometry theorems that may be reformulated as theorems of constructive type. \medskip \noindent 9) The affine version of {\em Desargue's theorem}: \begin{quote} If two triangles $\Delta\,ABC$ and $\Delta\,RST$ are in similarity position,\linebreak i.e., $g(AB)\,\|g(RS),\ g(BC)\|g(ST)$ and $g(AC)\|g(RT)$, then $g(AR),\linebreak g(BS)$ and $g(CT)$ pass through a common point (or are parallel). \end{quote} The given configuration may be constructed step by step in the following way: Take $A,B,C,R$ arbitrarily, choose $S$ arbitrarily on the line through $R$ parallel to $g(AB)$ and $T$ as the intersection point of the lines through $R$ parallel to $g(AC)$ and through $S$ parallel to $g(BC)$. \begin{code}\>\+ A:=Point(a1,a2); B:=Point(b1,b2);\\ C:=Point(c1,c2); R:=Point(d1,d2);\\ S:=choose\_pl(par(R,pp\_line(A,B)),u);\\ T:=intersection\_point(\\\>\> par(R,pp\_line(A,C)),par(S,pp\_line(B,C)));\\[6pt] con:=concurrent(pp\_line(A,R),pp\_line(B,S),pp\_line(C,T)); \end{code} Another proof may be obtained translating the statement into a theorem of linear type. Since the geometric conditions put no restrictions on $A,B,C,R$, one restriction on $S$ ($g(AB)\|g(RS)$) and two restrictions on $T$ ($g(BC)\|g(ST),\,$ $g(AC)\|g(RT)$), we may take as generic coordinates \begin{code}\>\+ A:=Point(u1,u2); B:=Point(u3,u4); C:=Point(u5,u6);\\ R:=Point(u7,u8); S:=Point(u9,x1); T:=Point(x2,x3); \end{code} with $u_1,\ldots,u_9$ independent and $x_1,x_2,x_3$ dependent, as polynomial conditions \begin{code}\+\+ polys:=\{\>\>parallel(pp\_line(R,S),pp\_line(A,B)),\\ parallel(pp\_line(S,T),pp\_line(B,C)),\\ parallel(pp\_line(R,T),pp\_line(A,C))\}; \end{code} and as conclusion \begin{code}\> con:=concurrent(pp\_line(A,R),pp\_line(B,S),pp\_line(C,T)); \end{code} The polynomial conditions are linear in $x_1,x_2,x_3$ and thus \begin{code}\>\+ sol:=solve(polys,\{x1,x2,x3\});\\ sub(sol,con); \end{code} proves the theorem since the expression obtained from $con$ substituting the dependent variables by their rational expressions in $\uhh$ simplifies to zero. \medskip The general version of {\em Desargue's theorem}: \begin{quote} The lines $g(AR),\ g(BS)$ and $g(CT)$ pass through a common point iff the intersection points $g(AB)\wedge g(RS),\ g(BC)\wedge g(ST)$ and $g(AC)\wedge g(RT)$ are collinear. \end{quote} may be reduced to the above theorem by a projective transformation mapping the line through the three intersection points to infinity. Its algebraic formulation \begin{code}\>\+ A:=Point(0,0); B:=Point(0,1); C:=Point(u5,u6);\\ R:=Point(u7,u8); S:=Point(u9,u1); T:=Point(u2,x1);\\[6pt] con1:=collinear(\+\\intersection\_point(pp\_line(R,S),pp\_line(A,B)),\\ intersection\_point(pp\_line(S,T),pp\_line(B,C)),\\ intersection\_point(pp\_line(R,T),pp\_line(A,C)));\-\\ con2:=concurrent(pp\_line(A,R),pp\_line(B,S),pp\_line(C,T)); \end{code} contains a polynomial $con_2$ linear in $x_1$ and a rational function $con_1$ with numerator quadratic in $x_1$ that factors as \[{\rm num}(con_1)=con_2\cdot {\rm collinear}(R,S,T)\] thus also proving the general theorem. \medskip \noindent 10) Consider the following theorem about the {\em Brocard points} (\cite[p.~336]{Chou:88}) \begin{quote} Let $\Delta\,ABC$ be a triangle. The circles $c_1$ through $A,B$ and tangent to $g(AC)$, $c_2$ through $B,C$ and tangent to $g(AB)$, and $c_3$ through $A,C$ and tangent to $g(BC)$ pass through a common point. \end{quote} It leads to a theorem of linear type that can't be translated into constructive type in an obvious way. The circles may be described each by 3 dependent variables and 3 conditions \begin{code}\>\+ A:=Point(0,0); B:=Point(1,0); C:=Point(u1,u2);\\[6pt] c1:=Circle(1,x1,x2,x3);\\ c2:=Circle(1,x4,x5,x6);\\ c3:=Circle(1,x7,x8,x9);\-\\[6pt] polys:=\{\>\> cl\_tangent(c1,pp\_line(A,C)), \+\+\\ point\_on\_circle(A,c1), \\ point\_on\_circle(B,c1), \\ cl\_tangent(c2,pp\_line(A,B)), \\ point\_on\_circle(B,c2), \\ point\_on\_circle(C,c2), \\ cl\_tangent(c3,pp\_line(B,C)), \\ point\_on\_circle(A,c3), \\ point\_on\_circle(C,c3)\}; \end{code} that are linear in the dependent variables. Hence the coordinates of the circles and the intersection point of two of them may be computed and checked for incidence with the third circle: \begin{code}\>\+ vars:=\{x1,x2,x3,x4,x5,x6,x7,x8,x9\};\\ sol:=solve(polys,vars);\\[6pt] P:=other\_cc\_point(C,sub(sol,c1),sub(sol,c2));\\ con:=point\_on\_circle(P,sub(sol,c3)); \end{code} Again $con$ simplifies to zero thus proving the theorem. \medskip Even some theorems involving nonlinear objects as circles may be translated into theorems of constructive type using a rational parametrization of the non linear object. For a circle with radius $r$ and center $M=(m_1,m_2)$ we may use the rational parametrization \[\{(\frac{1-u^2}{1+u^2}r+m_1,\frac{2u}{1+u^2}r+m_2)\ |\ u\in {\bf C}\}.\] This way we can prove \medskip \noindent 11) {\em Simson's theorem} (\cite[p. 261]{Chou:84}, \cite[thm. 2.51]{Coxeter:67}): \begin{quote} Let $P$ be a point on the circle circumscribed to the triangle $\Delta\,ABC$ and $X,Y,Z$ the pedal points of the perpendiculars from $P$ onto the lines passing through pairs of vertices of the triangle. These points are collinear. \end{quote} Take the center $M$ of the circumscribed circle as the origin and $r$ as its radius. The proof of the problem may be mechanized in the following way: \begin{code}\>\+ M:=Point(0,0);\\ A:=choose\_pc(M,r,u1);\\ B:=choose\_pc(M,r,u2);\\ C:=choose\_pc(M,r,u3);\\ P:=choose\_pc(M,r,u4);\\ X:=pedalpoint(P,pp\_line(A,B));\\ Y:=pedalpoint(P,pp\_line(B,C));\\ Z:=pedalpoint(P,pp\_line(A,C));\\[8pt] con:=collinear(X,Y,Z); \end{code} Since $con$ simplifies to zero this proves the theorem. \subsection{Theorems of equational type} An ``almost'' constructive proof of Simson's theorem may be obtained in the following way: \begin{code}\>\+ A:=Point(0,0); B:=Point(u1,u2);\\ C:=Point(u3,u4); P:=Point(u5,x1);\\ X:=pedalpoint(P,pp\_line(A,B));\\ Y:=pedalpoint(P,pp\_line(B,C));\\ Z:=pedalpoint(P,pp\_line(A,C));\\[6pt] poly:=p4\_circle(A,B,C,P);\\[6pt] con:=collinear(X,Y,Z); \end{code} There is a single dependent variable bound by the quadratic condition $poly$ that the given points are on a common circle. $con$ is a rational expression with numerator equal to \formel{poly\cdot {\rm collinear}(A,B,C)^2. } Since the second factor may be considered as degeneracy condition this also proves Simson's theorem. The factors of the denominator \formel{{\rm den}(con)={\rm sqrdist}(A,B)\cdot {\rm sqrdist}(A,C)\cdot {\rm sqrdist}(B,C) } are exactly the non degeneracy conditions collected during the computation. They may be printed with {\tt print\_ndg()}. \medskip One may also substitute the rational coordinate construction of $X,Y,Z$ through {\tt pedalpoint} with additional dependent variables and polynomial conditions: \begin{code}\>\+ M:=Point(0,0); A:=Point(0,1); \\ B:=Point(u1,x1); C:=Point(u2,x2); P:=Point(u3,x3);\\ X:=varpoint(A,B,x4);\\ Y:=varpoint(B,C,x5);\\ Z:=varpoint(A,C,x6); \end{code} The polynomial conditions \begin{code} polys:=\{\>\> sqrdist(M,B)-1, sqrdist(M,C)-1, sqrdist(M,P)-1,\+\+\\ orthogonal(pp\_line(A,B),pp\_line(P,X)),\\ orthogonal(pp\_line(A,C),pp\_line(P,Z)),\\ orthogonal(pp\_line(B,C),pp\_line(P,Y))\}; \end{code} contain three quadratic polynomials in $x_1,x_2,x_3$ and three polynomials linear in $x_4,x_5,x_6$. The quadratic polynomials correspond to different points on the circle with given $x$-coordinate. The best variable order eliminates linear variables first. Thus the following computations prove the theorem \begin{code} con:=collinear(X,Y,Z);\\[8pt] vars:=\{x4,x5,x6,x1,x2,x3\};\\ setring(vars,\{\},lex);\\ setideal(polys,polys);\\ con mod gbasis polys; \end{code} since the conclusion polynomial reduces to zero. \medskip \noindent 12) The Butterfly Theorem (\cite[p. 269]{Chou:84}, \cite[thm. 2.81]{Coxeter:67}) : \begin{quote} Let $A,B,C,D$ be four points on a circle with center $O$, $P$ the intersection point of $AC$ and $BD$ and $F$ resp. $G$ the intersection point of the line through $P$ perpendicular to $OP$ with $AB$ resp. $CD$. Then $P$ is the midpoint of $FG$. \end{quote} Taking $P$ as the origin and the lines $g(FG)$ and $g(OP)$ as axes we get the following coordinatization: \begin{code}\>\+ P:=Point(0,0); O:=Point(u1,0);\\ A:=Point(u2,u3); B:=Point(u4,x1);\\ C:=Point(x2,x3); D:=Point(x4,x5); \\ F:=Point(0,x6); G:=Point(0,x7);\-\\[6pt] polys:=\{\>\> sqrdist(O,B)-sqrdist(O,A),\+\+\\ sqrdist(O,C)-sqrdist(O,A), \\ sqrdist(O,D)-sqrdist(O,A),\\ point\_on\_line(P,pp\_line(A,C)),\\ point\_on\_line(P,pp\_line(B,D)),\\ point\_on\_line(F,pp\_line(A,D)),\\ point\_on\_line(G,pp\_line(B,C))\};\-\-\\[6pt] con:=num sqrdist(P,midpoint(F,G)); \end{code} Note that the formulation of the theorem includes $A\neq C$ and $B\neq D$. Hence the conclusion may (and will) fail on some of the components of $Z(polys)$. This can be avoided supplying appropriate constraints to the \gr\ factorizer: \begin{code}\>\+ vars:=\{x6,x7,x3,x5,x1,x2,x4\};\\ setring(vars,\{\},lex);\\[6pt] sol:=groebfactor(polys,\{sqrdist(A,C),sqrdist(B,D)\});\\[6pt] for each u in sol collect con mod u; \end{code} $sol$ contains a single solution that reduces the conclusion $con$ to zero. Hence the \gr\ factorizer could split the components and remove the auxiliary ones. Note that there is also a constructive proof of the Butterfly theorem, see {\tt geometry.tst}. \medskip \noindent 13) Let's prove another property of Feuerbach's circle (\cite[thm. 5.61]{Coxeter:67}): \begin{quote} For an arbitrary triangle $\Delta\,ABC$ Feuerbach's circle is tangent to its in- and excircles (tangent circles for short). \end{quote} Take the same coordinates as in example 5 and construct the coordinates of the center $N$ of Feuerbach's circle $c_1$ as in example 4: \begin{code}\>\+ A:=Point(0,0); B:=Point(2,0); C:=Point(u1,u2);\\ M:=intersection\_point(mp(A,B),mp(B,C));\\ H:=intersection\_point(altitude(A,B,C),altitude(B,C,A));\\ N:=midpoint(M,H);\\[6pt] c1:=c1\_circle(N,sqrdist(N,midpoint(A,B))); \end{code} The coordinates of the center {\tt P:=Point(x1,x2)} of one of the tangent circles are bound by the conditions \begin{code} polys:=\{point\_on\_bisector(P,A,B,C), point\_on\_bisector(P,B,C,A)\}; \end{code} Due to the choice of the coordinates $x_2$ is the radius of this circle. Hence the conclusion may be expressed as \begin{code}\> con:=cc\_tangent(c1\_circle(P,x2\^{}2),c1); \end{code} The polynomial conditions $polys$ have four generic solutions, the centers of the four tangent circles, as derived in example 5. Since \begin{code}\>\+ vars:=\{x1,x2\};\\ setring(vars,\{\},lex);\\ setideal(polys,polys);\\ num con mod gbasis polys; \end{code} yields zero this proves that all four circles are tangent to Feuerbach's circle. \cite[ch.5,\S 6]{Coxeter:67} points out that Feuerbach's circle of $\Delta\,ABC$ coincides with Feuerbach's circle of each of the triangles $\Delta\,ABH,\, \Delta\,ACH$ and $\Delta\,BCH$. Hence there are another 12 circles tangent to $c_1$. This may be proved Note that the proof in \cite{Coxeter:67} uses inversion geometry. The author doesn't know about a really ``elementary'' proof of this theorem. \section{Exercises} \begin{itemize} \item[1.] (\cite[p. 267]{Chou:84}) Let $ABCD$ be a square and $P$ a point on the line parallel to $BD$ through $C$ such that $l(BD)=l(BP)$, where $l(BD)$ denotes the distance between $B$ and $D$. Let $Q$ be the intersection point of $BF$ and $CD$. Show that $l(DP)=l(DQ)$. \item[2.] The altitudes' pedal points theorem: Let $P,Q,R$ be the altitudes' pedal points in the triangle $\Delta\,ABC$. Show that the altitude through $Q$ bisects $\angle\, PQR$. \item[3.] Let $\Delta\,ABC$ be an arbitrary triangle. Consider the three altitude pedal points and the pedal points of the perpendiculars from these points onto the the opposite sides of the triangle. Show that these 6 points are on a common circle, the {\em Taylor circle}. \item[4.] Prove the formula \[F(\Delta\,ABC) = \frac{a\,b\,c}{4\,R},\] for the area of the triangle $\Delta\,ABC$, if $a,b,c$ are the lengths of its sides and $R$ the radius of its circumscribed circle. \item[5.] (\cite[p. 283]{Chou:84}) Let $k$ be a circle, $A$ the contact point of the tangent line from a point $B$ to $k$, $M$ the midpoint of $AB$ and $D$ a point on $k$. Let $C$ be the second intersection point of $DM$ with $k$, $E$ the second intersection point of $BD$ with $k$ and $F$ the second intersection point of $BC$ with $k$. Show that $EF$ is parallel to $AB$. \item[6.] (35th IMO 1995, Toronto, problem 1, \cite{IMO}) Let $A,B,C,D$ be four distinct points on a line, in that order. The circles with diameters $AC$ and $BD$ intersect at the points $X$ and $Y$. The line $XY$ meets $BC$ at the point $Z$. Let $P$ be a point on the line $XY$ different from $Z$. The line $CP$ intersects the circle with diameter $AC$ at the points $C$ and $M$, and the line $BP$ intersects the circle with diameter $BD$ at the points $B$ and $N$. Prove that the lines $AM, DN$ and $XY$ are concurrent. \item[7.] (34th IMO 1994, Hong Kong, problem 2, \cite{IMO}) $ABC$ is an isosceles triangle with $AB = AC$. Suppose that \begin{enumerate} \item[(i)] $M$ is the midpoint of $BC$ and $O$ is the point on the line $AM$ such that $OB$ is perpendicular to $AB$; \item[(ii)] $Q$ is an arbitrary point on the segment $BC$ different from $B$ and $C$; \item[(iii)] $E$ lies on the line $AB$ and $F$ lies on the line $AC$ such that $E, Q$ and $F$ are distinct and collinear. \end{enumerate} \noindent Prove that $OQ$ is perpendicular to $EF$ if and only if $QE = QF$. \item[8.] (4th IMO 1959, Czechia, problem 6, \cite{Morozova:68}) Show that the distance $d$ between the centers of the inscribed and the circumscribed circles of a triangle $\Delta\,ABC$ satisfies $d^2=r^2-2r\rho$, where $r$ is the radius of the circumscribed circle and $\rho$ the radius of the inscribed circle. \item[9.] (1th IMO 1959, Roumania, problem 5, \cite{Morozova:68}) Let $M$ be a point on AB, $AMCD$ and $MBEF$ squares to the same side of $g(AB)$ and $N$ the intersection point of their circumscribed circles, different from $M$. \begin{enumerate} \item[(i)] Show that $g(AF)$ and $g(BC)$ intersect at $N$. \item[(ii)] Show that all lines $g(MN)$ for various $M$ meet at a common point. \end{enumerate} \end{itemize} \bibliographystyle{plain} \bibliography{geometry} \end{document}