Wie wir im letzten Abschnitt gesehen haben, gibt es eine M{\"o}glichkeit, automatische Beweise zu f{\"u}hren. Jetzt widmen wir
uns der Umsetzung dieses Verfahrens in das Computeralgebrasystem \ma. Dabei nutzen wir Teile des
\textsc{SymbolicData}-Projektes \cite{SymbolicData}, auf die wir in Abschnitt \ref{Symbolicdata} n{\"a}her eingehen.

Das gesamte Verfahren sieht folgenderma{\ss}en aus:\\
Wir {\"u}bersetzen einen geometrischen Satz in eine Menge von Polynomen; diese Polynome erzeugen uns eine Variet{\"a}t.
Zu dieser Variet{\"a}t bestimmen wir das Verschwindungsideal und {\"u}berpr{\"u}fen, ob das Polynom der Folgerung in dem Radikalideal des Verschwindungsideals enthalten ist.
Zur {\"U}bersetzung der Geometrie in Polynome verwenden wir Teile des \textsc{SymbolicData}-Projektes.
Das Ideal-Membership-Problem l{\"o}sen wir in \ma.

\begin{subsection}{{\gbn} mit \ma}
Wie eben in der allgemeinen Beschreibung gesehen, werden mit Polynomoperationen und {\gbn} nur Standardfunktionen eines
Computeralgebrasystems ben{\"o}tigt. Daher ist es nicht entscheidend, welches Computeralgebrasystem wir verwenden. Ganz am
Ende der Arbeit werden wir noch einen Geschwindigkeitsvergleich der verschiedenen Systeme betrachten. Ich habe mich f{\"u}r
\ma\ entschieden, da es das mir am besten bekannte System war. Jedes andere Computeralgebrasystem, das in der Lage ist,
{\gbn} zu berechnen, w{\"a}re ebenso geeignet.

Wie wir bereits im letzten Kapitel gesehen haben, berechnet man {\gbn} in \ma\ mit dem Befehl \textbf{GroebnerBasis}. Als Parameter {\"u}bergibt man die Polynome
$p_1,\ldots,p_e\in\rmenge[x_1,\ldots,x_n]$, die unser Ideal erzeugen, und die Variablen $x_1,\ldots,x_n$, in denen die
Polynome gegeben sind. Dann berechnet der Algorithmus eine {\gb} aus $\qmenge[x_1,\ldots,x_n]$ mit lexikographischer Ordnung. Wie wir aus Korollar
\ref{Korollar zur generalisierten Folgerung} Teil (ii) wissen, m{\"u}ssen wir eine {\gb} in
$\rmenge(u_1,\ldots,u_m)[x_1,\ldots,x_n]$ berechnen, d.h. eine {\gb} mit Koeffizienten aus $\rmenge(u_1,\ldots,u_m)$.

Diese Berechnung k{\"o}nnen wir in \ma\ umsetzen durch die Option \textbf{CoefficientDomain
$\rightarrow$RationalFunctions}, dann berechnet \ma\ immer eine \gb\ in den vorgegebenen Variablen mit Koeffizienten
aus den rationalen Funktionen in allen anderen Variablen.

Jetzt haben wir alle Werkzeuge bereitgestellt, um geometrische S{\"a}tze zu beweisen.
Wir fassen nochmals zusammen:\\
Als erstes {\"u}bersetzen wir unseren Satz in Polynome und danach versuchen wir ihn zu beweisen, Mithilfe des Befehls \textbf{GroebnerBasis}.

Im n{\"a}chsten Abschnitt befassen wir uns mit der {\"U}bersetzung; auch diese Arbeit kann uns \ma\ erheblich vereinfachen.
Dazu benutzen wir die GeoBeweiser-Bibliothek.
\end{subsection}

\begin{subsection}{Das \textsc{SymbolicData}-Projekt}\label{Symbolicdata}
Beginnen wir mit einem Zitat von der Webseite des \textsc{SymbolicData}-Projektes:\\
\emph{The \textsc{SymbolicData} project is set out to develop concepts and tools for Computer Algebra Benchmarks and to
collect relevant data from different areas of Computer Algebra. Tools and data are designed to be used both
on a local site for special benchmark purposes and to manage a central repository at  www.symbolicdata.org.
They are available for download under the terms of the GNU Public License. \cite{SymbolicData}}

Das \textsc{SymbolicData}-Projekt entstand 1998 nach einer Diskussion {\"u}ber Benchmark-Aktivit{\"a}ten im Bereich der
Computeralgebra auf der ISSAC'98 in Rostock. Die bisherigen Hauptrichtungen des \textsc{SymbolicData}-Projektes lassen
sich wie folgt umrei{\ss}en \cite{CARGraebe}:
\begin{enumerate}
\item Systematische Sammlung existierender Benchmark-Daten zu verschiedenen Fragestellungen des symbolischen Rechnens und Erstellung von Werkzeugen, mit denen
diese Daten bequem gewartet und erweitert werden k{\"o}nnen.
\item Entwurf von Konzepten und Implementierung von Werkzeugen, unter denen sich glaubw{\"u}rdige Benchmark-Rechnungen auf diesen Daten ausf{\"u}hren lassen.
\item Bereitstellung von Werkzeugen, mit denen man in den gesammelten Daten navigieren, diese nach verschiedenen Kriterien selektieren und in andere Formate transferieren kann.
\end{enumerate}

Ich benutze in meiner Diplomarbeit aus diesem Projekt den GeoProver, eine Bibliothek zur {\"U}bersetzung von geometrischen Aussagen in ihre algebraischen Entsprechungen.

Diese Bibliothek wurde von mir, um die Dreiteilung von Winkeln und Funktionen zur Verwaltung der Polynome erweitert und ins Deutsche {\"u}bersetzt, aber um die Kompatibilit{\"a}t mit GeoProver zu
bewahren, habe ich keine Bezeichnungen von Befehlen {\"u}bersetzt. ?Nach dieser {\"U}bersetzung habe ich auch den Namen auf,
GeoBeweiser ge{\"a}ndert, damit in dieser Arbeit keine Verwechslungsgefahr der zwei Bibliotheken besteht. Wir werden sie
jetzt n{\"a}her betrachten und an einigen Beispielen erkl{\"a}ren, wie sie funktioniert.

Weitergehende Informationen zum \textsc{SymbolicData}-Projekt finden sich in dem Artikel \cite{RWCAGraebe} von Gr{\"a}be
\end{subsection}

\begin{subsection}{{\"U}bersetzung der Geometrie in Polynome am Beispiel des Satzes \ref{Satz Parallelogramm}}\label{Uebersetzung der Geometrie in Polynome am Beispiel}
F{\"u}r die Beschreibung der geometrischen Objekte in unserem Computeralgebrasystem benutzen wir Tupel mit einem Header,
d.h. ein Punkt $(x,y)$ ist ein Tupel vom Typ Punkt ($(x,y)\in\Punkte$). Dabei verwenden wir f{\"u}r Geraden und Kreise
homogene Koordinaten, d.h. man kann das gesamte Tupel mit einer Konstanten $c\in\rmenge\backslash\{0\}$ multiplizieren
ohne das sich das geometrische Objekt ver{\"a}ndert. Homogene Koordinaten haben einen erheblichen Vorteil beim
Vereinfachen, denn man kann durch den $ggT$ der Koordinaten teilen und erh{\"a}lt \anf{einfachere} algebraische Objekte.
Alle Eintr{\"a}ge der Tupel sind Elemente aus $\rmenge(u_1,\ldots,u_m)[x_1,\ldots,x_n]$.
\begin{enumerate}
    \item point -- ein Punkt als Zweitupel mit den zwei Koordinaten des Punktes als Inhalt.\\
        Zur Vereinfachung notieren wir im folgenden f{\"u}r einen Punkt $P=(a,b)$ mit $a,b\in\rmenge$ die Koordinaten als $P_x$ und $P_y$ mit $P_x=a$ und $P_y=b$.\\
        Tupel: $(P_x,P_y)$
    \item line -- bezeichnet eine Gerade $g$ als Dreitupel mit folgendem Inhalt:\\
        Als erstes die H{\"o}hendifferenz $g_{dy}$ zweier verschiedener Punkte auf der Gerade,
        als zweites die zu den selben Punkten geh{\"o}rende Vertikaldifferenz $g_{dx}$
        und als drittes die Konstante $c$ zu der homogenen Geradengleichung $g_{dx} y+g_{dy} x+g_c=0$.\\
        Anmerkung: Auch Zweitupel definieren eine Gerade, wie in der Schule mit $y=mx+b$, aber damit k{\"o}nnen keine Geraden parallel zur $y$-Achse beschrieben werden.
        Au{\ss}erdem entst{\"u}nden hierbei keine homogenen Koordinaten.\\
        Wir benennen die Differenz in $y$ bzw. $x$ Richtung mit $g_{dy}$ und $g_{dx}$ und die Konstante mit $g_{c}$\\
        Tupel: $(g_{dy},g_{dx},g_{c})$
    \item circle -- ein Kreis ${K^o}$, der durch ein Viertupel dargestellt wird.
        Betrachten wir einen Kreis mit Mittelpunkt $M=(M_x,M_y)$ und einem Randpunkt $S=(S_x,S_y)$. Der Radius sei gegeben durch $r^2=\abs{\overline{SM}}^2$.
        Aus der Schule kennen wir die Kreisgleichung
        $${K^o}_{A}(x^2+y^2)+{K^o}_{B}x+{K^o}_{C}y+{K^o}_{D}=0.$$
        %m{\"o}glicherweise ohne den Faktor ${K^o}_{A}$, aber den ben{\"o}tigen wir hier, um homogene Koordinaten zu erhalten.\\
        Die Koeffizienten ergeben sich aus den Punkten $S$ und $M$ durch quadratische Erg{\"a}nzung:
        \begin{enumerate}
        \item ${K^o}_{A}=1$
        \item ${K^o}_{B}=-2M_x$
        \item ${K^o}_{C}=-2M_y$
        \item ${K^o}_{D}=r^2-M^2$
        \end{enumerate}
%        $$(x-M)^2=r^2$$
%        diese stellen wir um, zu $x^2-2M x=r^2-M^2$. Aus der Gleichung benutzen wir die Terme $-2M$ und $r^2-M^2$ in unserem Tupel, das den Kreis beschreibt.
%        Da $M$ in dem Tupel gespeichert ist kann man leicht den Radius des Kreises bestimmen durch Addition von $M^2$ zur letzten Koordinate des Tupels.
%        Um homogene Koordinaten zu erhalten setzen wir noch einen Skalierungsfaktor vorne an das Tupel.
%        Das Viertupel besteht also aus folgenden Koordinaten:
%        \begin{enumerate}
%        \item Skalierungsfaktor ${K^o}_{skal}\in\rmenge\backslash\{0\}$
%        \item ${K^o}_x=-2m_x$
%        \item ${K^o}_y=-2m_y$
%        \item ${K^o}_{rest}=r^2-M^2$
%        \end{enumerate}
%        Der Skalierungsfaktor dient nur dazu homogene Koordinaten zu erhalten, f{\"u}r die Vorstellung teilen wir das gesamte Tupel einfach durch den Skalierungsfaktor,
%        dann haben wir wieder die nichthomogene Ausgangssituation.\\
        %Anmerkung: Auch diese nicht sofort kanonische Schreibweise f{\"u}r einen Kreis verdanken wir den homogenen Koordinaten,
        %die kanonische Schreibweise w{\"a}re eine Mittelpunkt-Radius Schreibweise gewesen.\\
        Tupel: $({K^o}_{A},{K^o}_{B},{K^o}_{C},{K^o}_{D})$
\end{enumerate}

Jetzt k{\"o}nnen wir beginnen, eine geometrische Eigenschaft, die Parallelit{\"a}t, zu {\"u}bersetzen. Wie wir bereits bei dem
Beispiel \ref{Satz Parallelogramm} gesehen haben, sind zwei Geraden parallel, wenn sie die gleiche Steigung haben. Es
seien $g=(g_{dy},g_{dx},g_{c})$ und $h=(h_{dy},h_{dx},h_{c})$ Geraden mit der Steigung $-\frac{g_{dy}}{g_{dx}}$ und
$-\frac{h_{dy}}{h_{dx}}$. Damit gilt
\begin{align}
\frac{g_{dy}}{g_{dx}}&=\frac{h_{dy}}{h_{dx}}\label{gdygdx}.
\end{align}
Durchmultiplizieren mit dem Hauptnenner ergibt
\begin{align}
g_{dy}h_{dx}-h_{dy}g_{dx}&=0\label{gdygdxmal}.
\end{align}
Das Problem bei Gleichung \eqref{gdygdx} ist, dass die Parameter $g_{dx}$ oder $g_{dy}$ gleich null sein k{\"o}nnen; dann
teilen wir durch null und haben einen degenerierten Fall. Das erledigt sich von selbst in Gleichung \eqref{gdygdxmal},
dort ist dieser Fall ber{\"u}cksichtigt: Sollte $g_{dx}$ null sein, so muss auch $h_{dx}$ null sein, da nicht die erste und
zweite Koordinate einer Geraden gleichzeitig null sein k{\"o}nnen (Dann w{\"a}ren die Punkte zur Erzeugung gleich gewesen).
Jetzt definieren wir eine Funktion \textbf{isparallel}, die uns ein Polynom zur{\"u}ckgibt. F{\"u}r alle Punkte, die in der
Variet{\"a}t dieses Polynoms liegen, gilt, dass $g$ und $h$ parallel sind.
\begin{equation}
\texttt{isparallel}[g,h]:=g_{dy}h_{dx}-h_{dy}g_{dx}
\end{equation}
Zerlegen wir das noch etwas genauer:
Die Geraden $g$ und $h$ sind gegeben in ihren Parametern $g=(g_{dy},g_{dx},g_{c})$ und $h=(h_{dy},h_{dx},h_{c})$,
wobei $g_{dy},g_{dx},g_{c},h_{dy},h_{dx},h_{c}\in\rmenge(u_1,\ldots,u_m)[x_1,\ldots,x_n]$.\\
Damit ist $g_{dy}h_{dx}-h_{dy}g_{dx}$ ein Polynom in $\rmenge(u_1,\ldots,u_m)[x_1,\ldots,x_n]$ und wir k{\"o}nnen eine Variet{\"a}t zu diesem Polynom berechnen.
$V:=\Vfunc(g_{dy}h_{dx}-h_{dy}g_{dx})$ ist die Variet{\"a}t, auf der gilt: $g$ ist parallel zu $h$, d.h. f{\"u}r jeden Punkt $p\in V\subset\rmenge^{n+m}$ gilt, dass $g$ und $h$ parallel sind.\\
Bilden wir jetzt das Verschwindungsideal der Variet{\"a}t $V$ $\Ifunc(V)=I$, so bedeutet das, dass f{\"u}r jedes Polynom $p\in I\subset\rmenge(u_1,\ldots,u_m)[x_1,\ldots,x_n]$ gilt:
Die Nullstellen des Polynoms $p$ sind Punkte der Variet{\"a}t $V$ und damit Punkte, die unsere geometrische Eigenschaft erf{\"u}llen.
Das ist der Zusammenhang zwischen geometrischen Eigenschaften und Idealen.

Im folgenden benutzen wir eine weitere Funktion Namens \texttt{ppline}. Sie erzeugt eine Gerade, die durch zwei Punkte
geht. Die Eingabe sind zwei Objekte vom Typ point und die Ausgabe ist ein Objekt vom Typ line.

Um das Beispiel des Parallelogramms durchrechnen zu k{\"o}nnen, ben{\"o}tigen wir noch zwei weitere Funktionen, n{\"a}mlich
\texttt{iscollinear} und \texttt{sqrdist}. Die erste liefert uns bei Eingabe von drei Punkten (Typ point) ein Polynom,
auf dessen Nullstellenmenge die drei Punkte kollinear sind, d.h. sie liegen auf einer Geraden. Die zweite gibt das
Quadrat der Entfernung zweier Punkte zur{\"u}ck; dies ist keine Funktion, von welcher wir die Nullstellen bestimmen wollen,
sondern wir ben{\"o}tigen sie, um Entfernungen zu vergleichen. Jetzt formulieren wir unser Beispiel \ref{Satz
Parallelogramm} in \ma.
\begin{enumerate}
\item Als erstes definieren wir die Punkte des Parallelogramms:%
\footnote{Die Bezeichner $C$ und $N$ sind in \ma\ normalerweise belegt, aber der Befehl \texttt{Unprotect} gibt sie frei.
          Wir werden ihn noch {\"o}fter sehen, da diese Bezeichner bei geometrischen Konstruktionen oft verwendet werden.}
\dispTFinmath{
\MathBegin{MathArray}{l}
\Mfunction{Unprotect}[C,D,N];  \\
A=\Muserfunction{point}[0,0];  \\
B=\Muserfunction{point}[\Mvariable{u1},0];  \\
C=\Muserfunction{point}[\Mvariable{u2},\Mvariable{u3}];  \\
D=\Muserfunction{point}[\Mvariable{x1},\Mvariable{x2}];  \\
N=\Muserfunction{point}[\Mvariable{x3},\Mvariable{x4}];
\MathEnd{MathArray}
}

\item Danach stellen wir die Polynome f{\"u}r die Voraussetzungen auf. Dabei verwenden wir die Parallelit{\"a}t im
Parallelogramm und die Voraussetzung, dass $N$ auf den Strecken $\overline{AD}$ und $\overline{BC}$ liegt. Damit
gelangen wir zu folgender Konstruktion: \dispTFinmath{
\Mvariable{d1}=\Muserfunction{isparallel}[\Muserfunction{ppline}[A,B],\Muserfunction{ppline}[C,D]] }

\dispTFoutmath{
\Mvariable{u3}-\Mvariable{x2}
}

\dispTFinmath{
\Mvariable{d2}=\Muserfunction{isparallel}[\Muserfunction{ppline}[A,C],\Muserfunction{ppline}[B,D]]
}

\dispTFoutmath{
\Mvariable{u1}\multsp \Mvariable{u3}-\Mvariable{x1}\multsp \Mvariable{u3}+\Mvariable{u2}\multsp \Mvariable{x2}
}

\dispTFinmath{
\Mvariable{d3}=\Muserfunction{iscollinear}[N,A,D]
}

\dispTFoutmath{
\Mvariable{x1}\multsp \Mvariable{x4}-\Mvariable{x2}\multsp \Mvariable{x3}
}

\dispTFinmath{
\Mvariable{d4}=\Muserfunction{iscollinear}[N,B,C]
}

\dispTFoutmath{
\Mvariable{u1}\multsp \Mvariable{u3}-\Mvariable{x3}\multsp \Mvariable{u3}-\Mvariable{u1}\multsp \Mvariable{x4}+\Mvariable{u2}\multsp \Mvariable{x4}
}

\dispTFinmath{
\Mvariable{polys}=\{\Mvariable{d1},\Mvariable{d2},\Mvariable{d3},\Mvariable{d4}\}
}

Jetzt sind wir am Ziel, wir haben eine Menge von Voraussetzungen in $polys$:

\dispTFoutmath{
\{\Mvariable{u3}-\Mvariable{x2},\Mvariable{u1}\multsp \Mvariable{u3}-\Mvariable{x1}\multsp \Mvariable{u3}+\Mvariable{u2}\multsp \Mvariable{x2},\Mvariable{x1}\multsp
\Mvariable{x4}-\Mvariable{x2}\multsp \Mvariable{x3},\Mvariable{u1}\multsp \Mvariable{u3}-\Mvariable{x3}\multsp \Mvariable{u3}-\Mvariable{u1}\multsp
\Mvariable{x4}+\Mvariable{u2}\multsp \Mvariable{x4}\}.
}

\item Schlie{\ss}lich formulieren wir die Folgerungen des Satzes:

\dispTFinmath{ \Mvariable{con1}=\Muserfunction{sqrdist}[A,N]-\Muserfunction{sqrdist}[D,N] }

\dispTFoutmath{
-{{\Mvariable{x1}}^2}+2\multsp \Mvariable{x3}\multsp \Mvariable{x1}-{{\Mvariable{x2}}^2}+2\multsp \Mvariable{x2}\multsp \Mvariable{x4}
}

\dispTFinmath{
\Mvariable{con2}=\Muserfunction{sqrdist}[B,N]-\Muserfunction{sqrdist}[C,N]
}

\dispTFoutmath{
{{\Mvariable{u1}}^2}-2\multsp \Mvariable{x3}\multsp \Mvariable{u1}-{{\Mvariable{u2}}^2}-{{\Mvariable{u3}}^2}+2\multsp \Mvariable{u2}\multsp \Mvariable{x3}+2\multsp
\Mvariable{u3}\multsp \Mvariable{x4}
}
\end{enumerate}

Jetzt m{\"u}ssen wir nur noch {\"u}berpr{\"u}fen, ob $con1,con2\in\sqrt{polys}$, d.h.
\begin{align*}
{-x_1}^2+2x_3x_1-{x_2}^2+2x_2x_4\text{ und }u_1^2-2{x_3}u_1-u2^2-u3^2+2u_2x_3+2u_3x_4\\
\in\sqrt{\{u_3-x_2,u_1u_3-x_1u_3+u_2x_2,x_1x_4-x_2x_3,u_1u_3-x_3u_3-u_1x_4+u_2x_4\}}.
\end{align*}

Dies ist gleichbedeutend mit \anf{$con1$ und $con2$ folgen generalisiert aus $polys$}.
Mithilfe von Korollar \ref{Korollar zur generalisierten Folgerung} gilt:
\begin{align*}
con1,con2&\in\sqrt{polys}\\
&\Leftrightarrow \\
\text{Die \gbn\ von }polys\cup\{1-y\cdot con1\}&\text{ und }polys\cup\{1-y\cdot con2\}\text{ sind }\{1\}.
\end{align*}
Bestimmen wir diese Mengen
\dispTFinmath{
\Mvariable{zw1}=\Mfunction{Union}[\Mvariable{polys},\{1-y\multsp \Mvariable{con1}\}]
}

\dispTFoutmath{
\MathBegin{MathArray}{l}
\{\Mvariable{u3}-\Mvariable{x2},\Mvariable{u1}\multsp \Mvariable{u3}-\Mvariable{x1}\multsp \Mvariable{u3}+\Mvariable{u2}\multsp \Mvariable{x2},\Mvariable{u1}\multsp
\Mvariable{u3}-\Mvariable{x3}\multsp \Mvariable{u3}-\Mvariable{u1}\multsp \Mvariable{x4}+\Mvariable{u2}\multsp \Mvariable{x4},  \\
\noalign{\vspace{0.601563ex}}
\hspace{1.em} \Mvariable{x1}\multsp \Mvariable{x4}-\Mvariable{x2}\multsp \Mvariable{x3},1-(-{{\Mvariable{x1}}^2}+2\multsp \Mvariable{x3}\multsp \Mvariable{x1}-{{\Mvariable{x2}}^2}+2\multsp
\Mvariable{x2}\multsp \Mvariable{x4})\multsp y\}\\
\MathEnd{MathArray}
}

\dispTFinmath{
\Mvariable{zw2}=\Mfunction{Union}[\Mvariable{polys},\{1-y\multsp \Mvariable{con2}\}]
}

\dispTFoutmath{
\MathBegin{MathArray}{l}
\{\Mvariable{u3}-\Mvariable{x2},\Mvariable{u1}\multsp \Mvariable{u3}-\Mvariable{x1}\multsp \Mvariable{u3}+\Mvariable{u2}\multsp \Mvariable{x2},\Mvariable{u1}\multsp
\Mvariable{u3}-\Mvariable{x3}\multsp \Mvariable{u3}-\Mvariable{u1}\multsp \Mvariable{x4}+\Mvariable{u2}\multsp \Mvariable{x4},  \\
\noalign{\vspace{0.601563ex}}
\hspace{1.em} \Mvariable{x1}\multsp \Mvariable{x4}-\Mvariable{x2}\multsp \Mvariable{x3},1-({{\Mvariable{u1}}^2}-2\multsp \Mvariable{x3}\multsp \Mvariable{u1}-{{\Mvariable{u2}}^2}-{{\Mvariable{u3}}^2}+2\multsp
\Mvariable{u2}\multsp \Mvariable{x3}+2\multsp \Mvariable{u3}\multsp \Mvariable{x4})\multsp y\}\\
\MathEnd{MathArray}
}

und berechnen ihre \gbn, \texttt{vars} ist dabei eine Liste der abh{\"a}ngigen Koordinaten:
\dispTFinmath{
\MathBegin{MathArray}{l}
\Mfunction{GroebnerBasis}[\Mvariable{zw1},\Mvariable{vars},  \\
\noalign{\vspace{0.625ex}}
\hspace{2.em} \Mvariable{CoefficientDomain}\rightarrow \Mvariable{RationalFunctions}]//\Mfunction{Timing}\\
\MathEnd{MathArray}
}

\dispTFoutmath{
\{0.01\multsp \Mvariable{Second},\{1\}\}
}

\dispTFinmath{
\MathBegin{MathArray}{l}
\Mfunction{GroebnerBasis}[\Mvariable{zw2},\Mvariable{vars},  \\
\noalign{\vspace{0.625ex}}
\hspace{2.em} \Mvariable{CoefficientDomain}\rightarrow \Mvariable{RationalFunctions}]//\Mfunction{Timing}\\
\MathEnd{MathArray}
}

\dispTFoutmath{
\{0.01\multsp \Mvariable{Second},\{1\}\}.
}

Somit wurde der Satz \ref{Satz Parallelogramm} automatisch bewiesen, ohne Ber{\"u}cksichtigung der degenerierten F{\"a}lle.
\end{subsection}

\begin{subsection}{Allgemein: {\"U}bersetzung der Geometrie in Polynome}
Zur besseren {\"U}bersicht listen wir hier noch einmal die geometrischen Eigenschaften auf:

\input{listegeometrisch}

Diese geometrischen Eigenschaften aus Kapitel \ref{Geometrie} erweitern wir nun und geben jeweils eine {\"U}bersetzung in
Polynome an, um diese dann in Funktionen in \ma\ zu implementieren. Dabei m{\"u}ssen wir beachten, dass ein Teil unserer
Koordinaten, d.h. Geraden und Kreise, in homogenen Koordinaten gegeben ist und wir sie auch als solche verwenden m{\"u}ssen.

Wir werden in diesem Kapitel noch weitere geometrische Eigenschaften definieren, da sie das {\"U}bersetzen erheblich
vereinfachen, aber wir ben{\"o}tigen sie theoretisch nicht, da wir sie leicht aus anderen vorhandenen Eigenschaften zusammensetzen
kann. Man beachte, dass wir hier die Beschreibungen von Objekten durch Tupel aus Kapitel \ref{Uebersetzung der Geometrie
in Polynome am Beispiel} verwenden.

Zun{\"a}chst listen wir die bisherigen geometrischen Eigenschaften und die dazugeh{\"o}rigen Polynomgleichungen auf.
Diese Gleichungen sind genau dann null, wenn die geometrische Eigenschaft erf{\"u}llt ist.

%Hier jetzt die Geometrische Eigenschaften und ihre Polynomgleichungen, {\"u}ber $x_1,\ldots,x_n,$ $u_1,\ldots,u_m=:\overline{z}$, d.h. die geometrische Eigenschaft ist erf{\"u}llt, wenn die Polynomgleichung $0$ ist.\\
\begin{enumerate}
\item  \textbf{Geraden}
    \begin{enumerate}
        \item $A$ liegt auf $g$:
            $$g_{dy}A_x+g_{dx}A_y+g_{c}=0.$$
        \item $f$ und $g$ sind parallel:
            $$f_{dy}g_{dx}-f_{dx}g_{dy}=0.$$
        \item $f$ ist orthogonal zu $g$:
            $$f_{dy}g_{dy}+f_{dx}g_{dx}=0.$$
        \item $f$ steht im Winkel $\angle[u,v]$ zu $g$:
            $$\frac{f_{dy}g_{dx}-f_{dx}g_{dy}}{f_{dy}g_{dy}+f_{dx}g_{dx}}-\angle[u,v]=0$$
            \begin{bemerkung}
                   Das Polynom in (d) ist im Allgemeinen nicht in $\rmenge(\overline{u})[\overline{x}]$,
                    aber durch Multiplikation mit dem Hauptnenner kann man es zu einem Polynom aus $\rmenge(\overline{u})[\overline{x}]$ machen.
            \end{bemerkung}
    \end{enumerate}
\item \textbf{Kreise}
    \begin{enumerate}
        \item $A$ liegt auf $K^o$:
            $${K^o}_{A}({A_x}^2+{A_y}^2)+{K^o}_{B}A_x+{K^o}_{C}A_y+{K^o}_{D}=0.$$
        \item $g$ schneidet $K^o$:\\
            Es sei $P$ ein beliebiger Punkt. Wenn gilt: $P$ liegt auf $g$ und $P$ liegt auf $K^o$, dann schneidet $g$ den Kreis $K^o$.
        \item $g$ ist Tangente zu $K^o$: $$4{K^o}_{A}(-{K^o}_{A}g_{c}+{K^o}_{B}g_{dy}
            +{K^o}_{C}g_{dx})g_{c}-{K^o}_{D}(g_{dy}^2+g_{dx}^2) +({K^o}_{B}g_{dx}-{K^o}_{C}g_{dy})^2=0.$$
        \item $K^o$ und $I^o$ schneiden sich: \\
            Es sei $P$ ein beliebiger Punkt. Wenn gilt: $P$ liegt auf $K^o$ und $I^o$, dann schneiden sich die Kreise.
        \item $K^o$ und $I^o$ liegen tangential zueinander:
            \begin{align*}
                &4({K^o}_{A}{I^o}_{D}-{K^o}_{D}{I^o}_{A})^2-({K^o}_{B}{I^o}_{C}-{K^o}_{C}{I^o}_{B})^2\\
                -&4({K^o}_{A}{I^o}_{D}+{K^o}_{D}{I^o}_{A})({K^o}_{B}{I^o}_{B}+{K^o}_{C}{I^o}_{C})\\
                +&4{K^o}_{A}{K^o}_{D}({I^o}_{B}^2+{I^o}_{C}^2)+4({K^o}_{B}^2+{K^o}_{C}^2){I^o}_{A}{I^o}_{D}=0.
            \end{align*}
    \end{enumerate}
\pagebreak
\item \textbf{Geradenwinkel}
    \begin{enumerate}
        \item $\angle[g,h]$ ist genauso so gro{\ss} wie $\angle[k,l]$:
            Der Geradenwinkel $\angle[g,h]$ ist $\frac{g_{dx}h_{dy}-g_{dy}h_{dx}}{g_{dy}h_{dx}+g_{dx}h_{dy}}$, daraus
            folgt
            $$\frac{g_{dx}h_{dy}-g_{dy}h_{dx}}{g_{dy}h_{dx}+g_{dx}h_{dy}}-\frac{k_{dx}l_{dy}-k_{dy}l_{dx}}{k_{dy}l_{dx}+k_{dx}l_{dy}}=0.$$

        \item $\angle[g,h]$ ist doppelt so gro{\ss} wie $\angle[k,l]$: Wir wissen, dass
            $$\tan(2\alpha)=\frac{2\tan(\alpha)}{1-\tan^2(\alpha)}.$$
            Daraus folgt :
            $$\angle[g,h](1-\angle[k,l]^2)-2\angle[k,l]=0.$$
        \item $\angle[g,h]$ ist dreimal so gro{\ss} wie $\angle[k,l]$: Dann wissen wir, dass
            $$\tan(3\alpha)=\frac{\tan(\alpha)^3-3\tan(\alpha)}{3\tan^2(\alpha)-1}.$$
            Daraus folgt :
            $$\angle[k,l]^3-\angle[g,h](3\angle[k,l]^2-1)-3\angle[k,l]=0.$$
        \item $\angle[g,h]+\angle[k,l]=\angle[u,v]$: Hier nutzen wir, dass
            $$\tan(\alpha+\beta)=\frac{\tan(\alpha)+\tan(\beta)}{1-\tan(\alpha)\tan(\beta)}.$$
            Damit gilt:
            $$\angle[g,h]+\angle[k,l]-(1-\angle[g,h]\angle[k,l])\angle[u,v]=0.$$
    \end{enumerate}
\item \textbf{Strecken}
    \begin{enumerate}
        \item $\abs{\overline{AB}}=\abs{\overline{CD}}$:
            $$(A_x-B_x)^2+(A_y-B_y)^2-((C_x-D_x)^2+(C_y-d_y)^2)=0.$$
        \item $\abs{\overline{AB}}=2\cdot\abs{\overline{CD}}$:
            $$(A_x-B_x)^2+(A_y-B_y)^2-2((C_x-D_x)^2+(C_y-d_y)^2)=0.$$
        \item $\abs{\overline{AB}}=n\cdot\abs{\overline{CD}}$:
            $$(A_x-B_x)^2+(A_y-B_y)^2-n((C_x-D_x)^2+(C_y-d_y)^2)=0.$$
    \end{enumerate}
\item \textbf{Spiegelungen}
    \begin{enumerate}
        \item $A$ gespiegelt an $g$ ist $S$: Jetzt nutzen wir die bisher zusammengestellten Eigenschaften, um diese
            Eigenschaft umzusetzen. Als erstes definieren wir eine Gerade $h$,
            %mit $h$ ist orthogonal zu $g$ und $A$ liegt auf $h$.
            die durch $A$ f{\"u}hrt und orthogonal zu $g$ ist.
            Dann setzen wir den Punkt $F$, so dass $F$ auf $g$ und $h$ liegt. Danach muss nur noch gelten:
            $\abs{\overline{AS}}=2\abs{\overline{AF}}$ und $S$ liegt auf $h$.\\
            Damit ist die Spiegelung vollzogen.
        \item $A$ gespiegelt an $B$ ist $S$ (Punktspiegelung): Wir benutzen wie in (a) eine Gerade $h$ als
            Hilfslinie, so dass sie durch $A$ und $B$ geht, und {\"u}berpr{\"u}fen dann, ob $\abs{\overline{AS}}=2\abs{\overline{AB}}$ gilt und $S$ auf $h$ liegt.
    \end{enumerate}
\end{enumerate}

Passend zu unseren Objekten in der Geometrie ($\Punkte,\Geraden,\Kreise$), definieren wir nun Konstruktoren,
die Objekte in \ma\ erzeugen. Diese dienen in erster Linie der Typisierung der Objekte. Jedes Zweitupel k{\"o}nnte man als
Punkt auffassen, aber dann k{\"o}nnte auch ein Zweitupel, das keinen Punkt darstellt, als solcher aufgefasst werden, d.h.
sie dienen in erster Linie als Sicherheitsvorkehrung, damit in Funktionen nur die passenden Parameter eingesetzt
werden.

Danach werden wir einige Hilfsfunktionen kennen lernen. Diese Funktionen stellen keine geometrischen Eigenschaften dar,
sind aber sehr gut geeignet, um mit wenigen Schritten geometrische Eigenschaften zu zeigen.
%Betrachten wir zum Beispiel
Die Funktion \texttt{sqrdist} liefert das Quadrat der Entfernung zwischen zwei Punkten.
%Mit dieser Funktion kann man die Entfernung zweier Punktepaare vergleichen.
Man k{\"o}nnte auch eine Funktion \texttt{eqdist}, zum Vergleich der Entfernung, schreiben, die das selbe erm{\"o}glicht und eine geometrische Eigenschaft darstellt;
aber die Hilfsfunktion \texttt{sqrdist} ist flexibler. So kann man pr{\"u}fen, ob zwei Entfernungen in einem bestimmten Verh{\"a}ltnis zueinander stehen.
%Wir k{\"o}nnen zum Beispiel pr{\"u}fen ob eine Entfernung doppelt so gro{\ss} ist,
%nicht vergessen es sind Quadratentfernungen, also bei doppelter Entfernung muss der Wert von \texttt{sqrdist} viermal so gro{\ss} sein.
%Und so kann man bestimmen ob Entfernungen in einem bestimmten Verh{\"a}ltnis zueinander stehen.
%Daher gibt es keine Funktion \texttt{eqdist}, sondern nur die Hilfsfunktion \texttt{sqrdist}.

%Z.B. \texttt{sqrdist}, das
%Quadrat der Entfernung zwischen zwei Punkten, damit l{\"a}sst sich leicht zeigen, dass zwei Punkte gleich weit voneinander
%entfernt sind oder auch doppelt oder dreifach soweit. Andererseits w{\"a}re eine Funktion, die die gleiche Entfernung
%abfragt, nicht in der Lage, die doppelte oder dreifache Entfernung zu bestimmen, durch unsere Hilfsfunktion k{\"o}nnen wir
%leicht diese Funktionen realisieren.

Im folgenden sei $\overline{z}:=x_1,\ldots,x_n,u_1,\ldots,u_m$.

Der Wertebereich der meisten nachfolgenden Funktionen ist $\rmenge(\overline{z})$,
das sind rationale Funktionen und keine Polynome, d.h. wir k{\"o}nnen keine \gbn\ davon berechnen. Dieses Problem k{\"o}nnen wir beheben,
indem wir die rationalen Funktionen mit ihrem Hauptnenner multiplizieren. In den Hauptnennern steckt die Information {\"u}ber die degenerierten F{\"a}lle.
%Da uns diese nicht interessieren verlieren wir keine wichtigen Informationen.
Da wir keine degenerierten F{\"a}lle betrachten, also F{\"a}lle in denen der Nenner gleich null ist, verlieren wir keine relevanten Informationen.
% und $\rmenge(\overline{z})$, die Menge der Polynome {\"u}ber $\rmenge$ mit allen abh{\"a}ngigen und unabh{\"a}ngigen Koordinaten der Punkte als Variablen.
Im ersten Schritt werden alle Funktionen beschrieben, dann
ihr Definitions- und Wertebereich angegeben und in der dritten Zeile wird die Abbildung selbst angegeben.\\
\texttt{Funktionsname} - Beschreibung.
        \begin{align*}
            \texttt{Funktionsname}:\text{Definitionsbereich}\longrightarrow& \text{Wertebereich}\\
            \text{Variablen}\mapsto &\text{Funktionsergebnis}.
        \end{align*}

\begin{enumerate}
\item  \textbf{Konstruktoren}
    \begin{enumerate}
    \item \texttt{point} -- Erzeugt einen Punkt.
        \begin{align*}
            \texttt{point}:\rmenge\times\rmenge\longrightarrow&\Punkte\\
            x,y\mapsto &(x,y).
        \end{align*}
    \item \texttt{line} -- Erzeugt eine Gerade.
        \begin{align*}
            \texttt{line}:\rmenge\times\rmenge\times\rmenge\longrightarrow&\Geraden\\
            x,y,z\mapsto &(x,y,z).
        \end{align*}
    \item \texttt{ppline} -- Erzeugt eine Gerade aus zwei Punkten.
        \begin{align*}
            \texttt{ppline}:\Punkte\times\Punkte\longrightarrow&\Geraden\\
            A,B\mapsto &\texttt{line}[B_y-A_y,A_x-B_x,A_y\cdot B_x-A_x\cdot B_y].
        \end{align*}
    \item \texttt{circle} -- Erzeugt eine Kreislinie.
        \begin{align*}
            \texttt{circle}:\rmenge\times\rmenge\times\rmenge\times\rmenge\longrightarrow&\Kreise\\
            w,x,y,z\mapsto &(w,x,y,z).
        \end{align*}
    \item \texttt{p3circle} -- Erzeugt eine Kreislinie aus drei Punkten.
        \begin{align*}
            \texttt{p3circle}:\Punkte\times\Punkte\times\Punkte\longrightarrow&\Kreise\\
            \text{Hilfsvariablen:}& a3=A_x^2+A_y^2, b3=B_x^2+B_y^2, c3=C_x^2+C_y^2.\\
            A,B,C\mapsto &\texttt{circle}[A_x(B_y-C_y)+C_x(A_y-B_y)+B_x(C_y-A_y),\\
            & a3(C_y-B_y)+b3(A_y-C_y)+c3(B_y-A_y),\\
            & a3(B_x-C_x)+b3(C_x-A_x)+c3(A_x-B_x),\\
            & a3(B_yC_x-B_xC_y)+b3(A_xC_y-A_yC_x)+c3(A_yB_x-A_xB_y)].
        \end{align*}
    \end{enumerate}
\item  \textbf{Hilfsfunktionen}
    \begin{enumerate}
    \item \texttt{sqrdist} -- weist das Quadrat der Entfernung zwischen $A$ und $B$ zu.
        \begin{align*}
            \texttt{sqrdist}:\Punkte\times\Punkte\longrightarrow&\rmenge(\overline{z})\\
            A,B\mapsto &(A_x-B_x)^2+(A_y-B_y)^2.
        \end{align*}
    \item \texttt{l2angle} -- weist den Tangens des Winkels zwischen $f$ und $g$ zu.
        \begin{align*}
            \texttt{l2angle}:\Geraden\times\Geraden\longrightarrow&\rmenge(\overline{z})\\
            f,g\mapsto &\frac{f_{dy}g_{dx}-f_{dx}g_{dy}}{f_{dy}g_{dy}+f_{dx}g_{dx}}.
        \end{align*}
    \item \texttt{anglesum} -- weist die Summe der Geradenwinkel zu.
        \begin{align*}
            \texttt{anglesum}:\Geradenwinkel\times \Geradenwinkel\longrightarrow&\rmenge(\overline{z})\\
            \angle[g,h],\angle[k,l]\mapsto &\frac{l2angle[g,h]+l2angle[k,l]}{1-l2angle[g,h]\cdot l2angle[k,l]}.
        \end{align*}
    \end{enumerate}
\item  \textbf{Hilfsfunktionen, die neue Objekte erzeugen}
    \begin{enumerate}
    \item \texttt{intersectionpoint} -- berechnet den Schnittpunkt der Geraden $g$ und $h$.
        \begin{align*}
            \texttt{intersectionpoint}:\Geraden\times \Geraden\longrightarrow&\Punkte\\
            g,h\mapsto & \texttt{point}[\frac{g_{dy}h_c-g_ch_{dy}}{g_{dy}h_{dx}-g_{dx}h_{dy}},\frac{g_ch_{dx}-g_{dx}h_c}{g_{dy}h_{dx}-g_{dx}h_{dy}}].
        \end{align*}
    \item \texttt{varpoint} -- berechnet den Punkt zwischen $A$ und $B$ mit Parameter $x_{\rmenge}$ ($x_{\rmenge}=0$ ergibt den Punkt $A$,
        $x_{\rmenge}=1$ den Punkt $B$).
        \begin{align*}
            \texttt{varpoint}:\Punkte\times \Punkte\times\rmenge\longrightarrow&\Punkte\\
            A,B,x_{\rmenge}\mapsto & \texttt{point}[x_{\rmenge}B_x+(1-x_{\rmenge})A_x, x_{\rmenge}B_y+(1-x_{\rmenge})A_y].
        \end{align*}
    \item \texttt{ortholine} -- berechnet die Gerade orthogonal zu $g$ durch den Punkt $A$.
        \begin{align*}
            \texttt{ortholine}:\Punkte\times \Geraden\longrightarrow&\Geraden\\
            A,g\in\rmenge\mapsto & \texttt{line}[g_{dy},-g_{dx},g_{dx}A_y-g_{dy}A_x].
        \end{align*}
    \item \texttt{pedalpoint} -- berechnet den Fu{\ss}punkt der H{\"o}he von $g$ nach $A$ (Schnittpunkt der orthogonalen Geraden durch $A$ mit $g$).
        \begin{align*}
            \texttt{pedalpoint}:\Punkte\times \Geraden\longrightarrow&\Punkte\\
            A,g\mapsto & \texttt{intersectionpoint}[\texttt{ortholine}[A,g],g].
        \end{align*}
    \item \texttt{sympoint} -- berechnet den Spiegelungspunkt von $A$, gespiegelt an $g$.
        \begin{align*}
            \texttt{sympoint}:\Punkte\times \Geraden\longrightarrow&\Punkte\\
            A,g\mapsto & \texttt{varpoint}[A,\texttt{pedalpoint}[A,g],2].
        \end{align*}
    \item \texttt{csympoint} -- berechnet den Spiegelungspunkt von $A$, gespiegelt an $B$.
        \begin{align*}
            \texttt{csympoint}:\Punkte\times \Punkte\longrightarrow&\Punkte\\
            A,B\mapsto & \texttt{varpoint}[B,A,-1].
        \end{align*}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \item \texttt{midpoint} -- berechnet den Mittelpunkt von $A$ und $B$.
        \begin{align*}
            \texttt{midpoint}:\Punkte\times \Punkte\longrightarrow&\Punkte\\
            A,B\mapsto & \texttt{varpoint}[B,A,\frac{1}{2}].
        \end{align*}
    \item \texttt{rotate} -- berechnet den Punkt, der sich durch Drehung von $A$ um $B$ mit dem Winkel $\alpha\cdot\pi$ ergibt.
        \begin{align*}
            \texttt{rotate}:\Punkte\times \Punkte\times\rmenge\longrightarrow&\Punkte\\
            A,B,\alpha\mapsto & \texttt{point}[C_x+(A_x-C_x)\cos(\alpha\pi)-(A_y-C_y)\sin(\alpha\pi),\\
                    & C_y+(A_x-C_x)\sin(\alpha\pi)+(A_y-C_y)\cos(\alpha\pi)].
        \end{align*}
    \item \texttt{otherclpoint} -- berechnet den zweiten Schnittpunkt einer Geraden $g$ mit dem Kreis $K^o$ und dem ersten Schnittpunkt $P$.
        \begin{align*}
            \texttt{otherclpoint}:\Punkte\times \Kreise\times\Geraden\longrightarrow&\Punkte\\
            \text{Hilfsvariablen:}& d={K^o}_{A}(g_{dx}^2+g_{dy}^2)\\
            & d1={K^o}_{A}(g_{dy}^2-g_{dx}^2)\\
            P,K^o,g\mapsto & \texttt{point}[(d1P_x+((2{K^o}_{A}P_y+{K^o}_{C})g_{dy}-{K^o}_{B}g_{dx})g_{dx})/d,\\
            & (d1P_y+((2{K^o}_{A}P_x+{K^o}_{B})g_{dx}-{K^o}_{C}g_{dy})g_{dy})/d].
        \end{align*}
    \item \texttt{circlecenter} -- gibt den Mittelpunkt des Kreises $K^o$ zur{\"u}ck.
        \begin{align*}
            \texttt{circlecenter}:\Kreise\longrightarrow&\Punkte\\
            K^o\mapsto & \texttt{point}[{K^o}_{B}/(-2{K^o}_{A}),{K^o}_{C}/(-2{K^o}_{A})].
        \end{align*}
    \item \texttt{centroid} -- berechnet den Schwerpunkt des Dreiecks $\Delta ABC$.
        \begin{align*}
            \texttt{centroid}:\Punkte\times \Punkte\times\Punkte\longrightarrow&\Punkte\\
            A,B,C\mapsto & \texttt{intersectionpoint}[ppline[A,midpoint[B,C]],\\
            &ppline[B,midpoint[A,C]].
        \end{align*}
    \end{enumerate}
\end{enumerate}

Jetzt werden wir Funktionen f{\"u}r die oben genannten geometrischen Eigenschaften einf{\"u}hren, welche diesen Polynome zuweisen.
Die Variet{\"a}t, die von diesen Polynomen erzeugt wird, enth{\"a}lt alle Punkte, f{\"u}r die die
geometrische Eigenschaft zutrifft. Die Funktionen sind also genau dann $0$, wenn die geometrische Eigenschaft erf{\"u}llt
ist.

Beginnen wir mit den Geraden und betrachten die mit ihnen verbundene Eigenschaft: Ein Punkt liegt auf einer Geraden ($A\in\Punkte$ liegt
auf $g\in\Geraden$). Die Funktion f{\"u}r diese Eigenschaft hei{\ss}t \texttt{online}. Die Funktion
geht von $\Punkte\times\Geraden$ nach $\rmenge(\overline{z})$, wobei $\overline{z}:=x_1,\ldots,x_n,u_1,\ldots,u_m$.\\

%\texttt{online} - Eigenschaft: der Punkt liegt auf der Geraden.
%\begin{align*}
%\texttt{online}:\Punkte\times\Geraden\longrightarrow&\rmenge(\overline{z})\\
%A,g\mapsto &g_{dy}A_x+g_{dx}A_y+g_{c}.
%\end{align*}

\begin{enumerate}
\item  \textbf{Geraden}
    \begin{enumerate}
    \item \texttt{online} -- Ein Punkt liegt auf der Geraden.
        \begin{align*}
            \texttt{online}:\Punkte\times\Geraden\longrightarrow&\rmenge(\overline{z})\\
            A,g\mapsto &g_{dy}A_x+g_{dx}A_y+g_{c}.
        \end{align*}
    \item \texttt{isparallel} -- Zwei Geraden sind parallel.
        \begin{align*}
            \texttt{isparallel}:\Geraden\times\Geraden\longrightarrow&\rmenge(\overline{z})\\
            f,g\mapsto &f_{dy}g_{dx}-f_{dx}g_{dy}.
        \end{align*}
    \item \texttt{isorthogonal} -- Zwei Geraden sind orthogonal.
        \begin{align*}
            \texttt{isorthogonal}:\Geraden\times\Geraden\longrightarrow&\rmenge(\overline{z})\\
            A,g\mapsto &f_{dy}g_{dy}+f_{dx}g_{dx}.
        \end{align*}
    \item $f$ steht im Winkel $\angle[u,v]$ zu $g$ (Mithilfe von \texttt{l2angle}).
        \begin{align*}
            f,g,\angle[u,v]\mapsto &\texttt{l2angle}[f,g]-\angle[u,v].
        \end{align*}
    \end{enumerate}
\item \textbf{Kreise}
    \begin{enumerate}
    \item \texttt{oncircle} -- Ein Punkt liegt auf dem Kreis.
        \begin{align*}
            \texttt{oncircle}:\Punkte\times\Kreise\longrightarrow&\rmenge(\overline{z})\\
            A,K^o\mapsto &{K^o}_{A}({A_x}^2+{A_y}^2)+{K^o}_{B}A_x+{K^o}_{C}A_y+{K^o}_{D}.
        \end{align*}
        \item Eine Gerade $g$ schneidet einen Kreis $K^o$. $P$ sei ein Hilfspunkt.\\
            Diese geometrische Eigenschaft ist erf{\"u}llt, wenn \texttt{online[$P$,$g$]}=0 und
            \texttt{oncircle[$P$,$K^o$]}=0
            gilt.
        \item \texttt{iscltangent} -- Eine Gerade liegt tangential zum Kreis.
        \begin{align*}
            \texttt{iscltangent}:\Geraden\times\Kreise\longrightarrow&\rmenge(\overline{z})\\
            g,K^o\mapsto & 4{K^o}_{A}(-{K^o}_{A}g_{c}+{K^o}_{B}g_{dy}+{K^o}_{C}g_{dx})g_{c}\\
            &-{K^o}_{D}(g_{dy}^2+g_{dx}^2) +({K^o}_{B}g_{dx}-{K^o}_{C}g_{dy})^2.
        \end{align*}
        \item Zwei Kreise $K^o$ und $I^o$ schneiden sich. $P$ sei ein Hilfspunkt. \\
            Diese geometrische Eigenschaft ist erf{\"u}llt, wenn \texttt{oncircle[$P$,$K^o$]}=0 und
            \texttt{oncircle[$P$,$I^o$]}=0
            gilt.
        \item \texttt{iscctangent} -- Zwei Kreise liegen tangential zueinander.
        \begin{align*}
            \texttt{iscctangent}:\Kreise\times\Kreise\longrightarrow&\rmenge(\overline{z})\\
            K^o,I^o\mapsto &4({K^o}_{A}{I^o}_{D}-{K^o}_{D}{I^o}_{A})^2-({K^o}_{B}{I^o}_{C}-{K^o}_{C}{I^o}_{B})^2\\
                &-4({K^o}_{A}{I^o}_{D}+{K^o}_{D}{I^o}_{A})({K^o}_{B}{I^o}_{B}+{K^o}_{C}{I^o}_{C})\\
                &+4{K^o}_{A}{K^o}_{D}({I^o}_{B}^2+{I^o}_{C}^2)+4({K^o}_{B}^2+{K^o}_{C}^2){I^o}_{A}{I^o}_{D}.
        \end{align*}
    \end{enumerate}
\item \textbf{Geradenwinkel}
    \begin{enumerate}
        \item Zwei Winkel sind gleich gro{\ss}:
        \begin{align*}
            \angle[g,h],\angle[k,l]\mapsto & \texttt{l2angle[g,h]-l2angle[k,l]}.
        \end{align*}
        \item Der Winkel $\angle[g,h]$ ist doppelt so gro{\ss} wie der Winkel $\angle[k,l]$.
        \begin{align*}
            \angle[g,h],\angle[k,l]\mapsto & \texttt{l2angle}[g,h](1-\texttt{l2angle}[k,l]^2)-2\cdot \texttt{l2angle}[k,l].
        \end{align*}


        \item Der Winkel $\angle[g,h]$ ist dreimal so gro{\ss} wie der Winkel $\angle[k,l]$.
        \begin{align*}
            \angle[g,h],\angle[k,l]\mapsto & \texttt{l2angle}[k,l]^3-\texttt{l2angle}[g,h](3\cdot\texttt{l2angle}[k,l]^2-1)\\
                & -3\cdot\texttt{l2angle}[k,l].
        \end{align*}
        \item Die Summe zweier Winkel ist gleich einem dritten.
        \begin{align*}
            \texttt{anglesum}[\texttt{l2angle}[g,h],\texttt{l2angle}[k,l]]-\texttt{l2angle}[u,v].
        \end{align*}
    \end{enumerate}
\item \textbf{Strecken}\\
    Bei Strecken betrachten wir nur den Start- und Endpunkt. Daher gibt es auch kein eigenes Objekt f{\"u}r Strecken.
    Es ist mit unseren Methoden nicht m{\"o}glich zu bestimmen, ob ein Punkt auf einer Strecke liegt, nur, ob er auf der
    Geraden durch den Start- und Endpunkt liegt.
    \begin{enumerate}
        \item Zwei Strecken sind gleich lang. Mit den Endpunkten sieht das Problem folgenderma{\ss}en aus:
            Zwei Punktepaare haben die gleiche Entfernung zueinander.
        \begin{align*}
            %\texttt{eqdist}:(\Punkte\times\Punkte)\times(\Punkte\times\Punkte)\longrightarrow&\rmenge(\overline{z})\\
            (A,B),(C,D)\mapsto &\texttt{sqrdist}[A,B]-\texttt{sqrdist}[C,D].
        \end{align*}
        \item Zwei Punkte sind doppelt soweit voneinander entfernt wie zwei andere Punkte.
        \begin{align*}
            (A,B),(C,D)\mapsto &\texttt{sqrdist}[A,B]-4\cdot\texttt{sqrdist}[C,D].
        \end{align*}
%        \item Und nun die n-fache Entfernung, zwei Punkte $A,B$ sind :
%        \begin{align*}
%            (A,B),(C,D)\mapsto &\texttt{sqrdist}[A,B]-n\cdot\texttt{sqrdist}[C,D]
%        \end{align*}
    \end{enumerate}
\item \textbf{Spiegelungen}
    \begin{enumerate}
        \item $S$ ist der Spiegelungspunkt von $A$ gespiegelt an $g$.
            \begin{align*}
            A,g,S\mapsto & \texttt{equal}[\texttt{sympoint}[A,g],S].
        \end{align*}
        \item $A$ gespiegelt an $B$ ist $S$ (Punktspiegelung): Genauso wie oben
        erzeugen wir eine Gerade $h$ mit $A,B,S\in h$ und $\abs{\overline{AS}}=2\abs{\overline{AB}}$.
    \end{enumerate}
\item \textbf{Vergleich von Objekten}
    \begin{enumerate}
    \item \texttt{isequal} -- Zwei Objekte sind gleich.
        \begin{align*}
            \texttt{isequal}:\Punkte\times\Punkte\longrightarrow&\rmenge(\overline{z})\\
            A,B\mapsto & A-B\\
            \texttt{isequal}:\Geraden\times\Geraden\longrightarrow&\rmenge(\overline{z})\\
            g,h\mapsto & g-h\\
            \texttt{isequal}:\Kreise\times\Kreise\longrightarrow&\rmenge(\overline{z})\\
            K^o,I^o\mapsto & K-I.
        \end{align*}
    \end{enumerate}

\end{enumerate}
\begin{subsection}{Hilfsfunktionen}
Die Funktionen in diesem Abschnitt erleichtern uns die Sammlung unserer Polynome und die {\"U}berpr{\"u}fung, ob unsere Folgerung im Radikalideal enthalten ist.
Dazu f{\"u}hren wir zwei neue Funktionen \texttt{AddGleichung} und \texttt{IdealMember} ein.
Die Funktion \texttt{AddGleichung} f{\"u}gt das ihr {\"u}bergebene Polynom in die Menge $G$ ein. Dabei ist es auch m{\"o}glich, Punkte, also Objekte vom Typ \texttt{point},
zu {\"u}bergeben. Dann werden beide Koordinaten eines Punktes in die Menge $G$ {\"u}bernommen, d.h. es werden zwei Polynome in die Menge $G$ {\"u}bernommen.
Um die Menge $G$ abzufragen, verwenden wir die Funktion \texttt{Gleichungen}. Diese liefert uns eine Menge von Polynomen zur{\"u}ck.
Des Weiteren benutzen wir die Funktion \texttt{IdealMember}, diese bestimmt ob die Folgerung $con$ im Radikalideal von $G$ enthalten ist.
Wir nutzen die Aussage des Satzes \ref{Radical Membership} und berechnen die \gb\ von $G\cup {con}$ {\"u}ber $\rmenge(\overline{u})[\overline{x}]$ mit graded inverslexikographischer Ordnung.
Ist das Ergebnis $\{1\}$ dann liefert die Funktion $True$ sonst $False$.
Der Aufruf lautet \texttt{IdealMember[$con$,$G$,$vars$]}.

\begin{verbatim}
IdealMember[con_, G_,vars_] :=
    GroebnerBasis[Union[G, {1 - y con}], vars,
      CoefficientDomain -> RationalFunctions,
      MonomialOrder -> DegreeReverseLexicographic]
    =={1}
\end{verbatim}


Im n{\"a}chsten Kapitel arbeiten wir zuerst noch ein Beispiel ohne diese Funktionen ab, um dann am Beispiel des Morleyschen Dreiecks zu zeigen, dass es mit diesen Funktionen einfacher geht.
\end{subsection}
\end{subsection}
