doc-isac/dmeindl/proposal.tex
author wneuper <Walther.Neuper@jku.at>
Sun, 31 Dec 2023 09:42:27 +0100
changeset 60787 26037efefd61
parent 52107 f8845fc8f38d
permissions -rwxr-xr-x
Doc/Specify_Phase 2: copy finished
     1 %WN mit diesen 3 Zeichen beginnen meine Kommentare
     2 %WN111107: bitte spellchecker dr"uberlaufen lassen !!!
     3 
     4 \documentclass[12pt,a4paper]{article}
     5 \bibliographystyle{alpha}
     6 \def\isac{${\cal I}\mkern-2mu{\cal S}\mkern-5mu{\cal AC}$}
     7 \def\sisac{{\footnotesize${\cal I}\mkern-2mu{\cal S}\mkern-5mu{\cal AC}$}}
     8 %\usepackage{a4}
     9 %\usepackage[naustrian]{babel}
    10 %\usepackage[latin1]{inputenc}
    11 %\usepackage{calc}
    12 %\usepackage{amsmath}   
    13 %\usepackage{epsfig}
    14 %\usepackage{graphicx}
    15 %\usepackage{xcolor}
    16 %\usepackage{amsfonts}
    17 %
    18 %WN BITTE DIESE DEFINITIONEN WEGLASSEN ...
    19 %% Seitenräder einstellen und Höhe der Seitenzahlen
    20 %\usepackage{geometry}
    21 %\geometry{a4paper, left=2.5cm, right=2cm, top=3cm, bottom=2.8cm}
    22 %\setlength{\footskip}{2cm}
    23 %
    24 %
    25 %%Zähler definieren und Starwert setzen:
    26 %\newcommand{\R}{\mathbb R}
    27 %%\newcommand{\N}{\mathbb N}
    28 %%\newcommand{\Q}{\mathbb Q}
    29 %%\newcommand{\C}{\mathbb C}
    30 %
    31 %
    32 %\newcounter{ctr}
    33 %\setcounter{ctr}{0}
    34 %
    35 %\newcounter{Teubner}
    36 %\newcounter{Klingenberg}
    37 %\newcounter{T}
    38 %\newcounter{Vo}
    39 %\newcounter{Se}
    40 %\newcounter{E}
    41 %\newcounter{Bwl}
    42 %\newcounter{Int}
    43 %\newcounter{Prim}
    44 %\newcounter{Z}
    45 %\setcounter{Z}{0}
    46 %\setcounter{Teubner}{1}
    47 %\setcounter{Klingenberg}{2}
    48 %\setcounter{T}{1}
    49 %\setcounter{Vo}{7}
    50 %\setcounter{Se}{2}
    51 %\setcounter{E}{3}
    52 %\setcounter{Bwl}{4}
    53 %\setcounter{Int}{5}
    54 %\setcounter{Prim}{6}
    55 %%BSP
    56 %\newenvironment{myBsp}{
    57 %  \begin{list}{\textbf{\textsc{Bsp:}}}{
    58 %    \setlength{\labelwidth}{8Pc}
    59 %    \setlength{\labelsep}{0.5Pc}    
    60 %    \setlength{\rightmargin}{0Pc}
    61 %    \setlength{\leftmargin}{2Pc}
    62 %    \setlength{\parsep}{0ex plus 0.5ex}
    63 %    \setlength{\listparindent}{1em}
    64 %    \setlength{\itemsep}{1ex plus 0.5ex minus 0.2ex}
    65 %    \setlength{\topsep}{0.5Pc}
    66 %  }}
    67 %  {\end{list}
    68 %}
    69 %
    70 %
    71 %%Lemma
    72 %\newenvironment{myLemma}{
    73 %  \begin{list}{\textsc{\textbf{Lemma:\ \ \ }}}{
    74 %   \setlength{\labelsep}{-0.5Pc}    
    75 %    \setlength{\leftmargin}{1Pc}
    76 %    \setlength{\parsep}{0ex plus 0.5ex}
    77 %    \setlength{\listparindent}{1em}
    78 %    \setlength{\itemsep}{1ex plus 0.5ex minus 0.2ex}
    79 %    \setlength{\topsep}{0.5Pc}
    80 %  }}
    81 %  {\end{list}
    82 %}
    83 %%Korollar
    84 %\newenvironment{myKorollar}{
    85 %  \begin{list}{\textsc{\textbf{Korollar: }}}{
    86 %    \setlength{\labelwidth}{8Pc}
    87 %    \setlength{\labelsep}{0.5Pc}    
    88 %    \setlength{\rightmargin}{0Pc}
    89 %    \setlength{\leftmargin}{4Pc}
    90 %    \setlength{\parsep}{0ex plus 0.5ex}
    91 %    \setlength{\listparindent}{1em}
    92 %    \setlength{\itemsep}{1ex plus 0.5ex minus 0.2ex}
    93 %    \setlength{\topsep}{0.5Pc}
    94 %  }}
    95 %  {\end{list}
    96 %}
    97 %
    98 %%Theorem
    99 %\newenvironment{myTheorem}{
   100 %  \begin{list}{\textsc{\textbf{Theorem: }}}{
   101 %    \setlength{\labelwidth}{8Pc}
   102 %    \setlength{\labelsep}{0.5Pc}    
   103 %    \setlength{\rightmargin}{0Pc}
   104 %    \setlength{\leftmargin}{5Pc}
   105 %    \setlength{\parsep}{0ex plus 0.5ex}
   106 %    \setlength{\listparindent}{1em}
   107 %    \setlength{\itemsep}{1ex plus 0.5ex minus 0.2ex}
   108 %    \setlength{\topsep}{0.5Pc}
   109 %  }}
   110 %  {\end{list}
   111 %}
   112 %
   113 %
   114 %%Proportion
   115 %\newenvironment{myProp}{
   116 %  \begin{list}{\textsc{\textbf{Proportion: }}}{
   117 %    \setlength{\labelwidth}{8Pc}
   118 %    \setlength{\labelsep}{0.5Pc}    
   119 %    \setlength{\rightmargin}{0Pc}
   120 %    \setlength{\leftmargin}{4Pc}
   121 %    \setlength{\parsep}{0ex plus 0.5ex}
   122 %    \setlength{\listparindent}{1em}
   123 %    \setlength{\itemsep}{1ex plus 0.5ex minus 0.2ex}
   124 %    \setlength{\topsep}{0.5Pc}
   125 %  }}
   126 %  {\end{list}
   127 %}
   128 %
   129 %%Farben
   130 %
   131 %\newcommand{\red}[1]{\textcolor[rgb]{0.7,0,0}{\bf #1}}
   132 %\newcommand{\rd}[1]{\color{red}{#1}}
   133 %\newcommand{\white}[1]{\textcolor[rgb]{1,0,0}{\bf #1}}
   134 %\newcommand{\w}[1]{\color{white}{#1}}
   135 %\newcommand{\g}[1]{\color{myColor}{#1}}
   136 %
   137 %\usepackage{color}
   138 %\definecolor{myColor}{rgb}{0.9,0.9,0.9}% Wir definieren im RGB-Farbraum
   139 %
   140 %
   141 %\newcommand{\myDef}[1]{\parbox{\columnwidth}{\addtocounter{ctr}{1}{\w .}\\[-0.2cm]\textbf{Definition\ \Nummer:}\\#1}}
   142 %\newcommand{\mySatz}[2]{\colorbox{myColor}{\parbox{\columnwidth}{\addtocounter{ctr}{1}{\g .}\\[-0.2cm]\textbf{Satz\ \Nummer:}\ #1\\ #2}}}
   143 %\newcommand{\myBeweis}[1]{\textit{\textbf{Beweis:}\\ #1}}
   144 %\newcommand{\myAlg}[2]{\parbox{\columnwidth}{\addtocounter{ctr}{1}\textbf{Algorithmus\ \Nummer:}\ \ #1\\#2}}
   145 %\newcommand{\myProg}[1]{\fbox{\parbox{\columnwidth}{#1}}}
   146 %
   147 %\newcommand{\add}[1]{\addtocounter{#1}{1}}
   148 %\newcommand{\zahl}[1]{\setcounter{#1}{Z}}
   149 %\newcommand{\Q}[2]{\parbox{\columnwidth}{$^{[\arabic{#1}/#2]}$ }}
   150 %
   151 %\newcommand{\Nummer}{\thesection.\arabic{ctr}}
   152 %
   153 %---------- --------------------------------------------------- Beginn -----------------------------------------------------------------------
   154 
   155 \title{Greatest Common Divisor \\ for Multivariate Polynomials}
   156 \author{Diana Meindl\\meindl\_diana@yahoo.com}
   157 \date{\today}
   158 
   159 \begin{document}
   160 \maketitle
   161 %{\w .}\\[12cm]
   162 %\begin{center}
   163 %Presented to \\
   164 %A.Univ.Prof. Dipl.-Ing. Dr. Wolfgang Schreiner (RISC Insitute)\\
   165 %and\\
   166 %Dr. techn. Walther Neuper (Institut für Softwaretechnologie, TU Graz)
   167 %\end{center}
   168 %\newpage
   169 %{\w .}\hspace{6.5cm}\textbf{Abstact}\\[0.5cm]
   170 
   171 \abstract{
   172 This is a proposal for a Masters Thesis at RISC, the Research Institute for Symbolic Computation at Linz University.\\
   173 
   174 Calculation with fractions is an important part of Computer Algebra Systems (CAS). This proposal aims at a specific part of such calculations, the greatest common divisor (GCD) used for cancellation, but in the very general context of multivariate polynomials. Cancellation of multivariate polynomials is a settled topic in Computer Algebra, respective algorithms well documented and implementations available in all CASs.
   175 
   176 This proposal claims for novelty with respect to the context of implementation, an implementation as a CAS-feature in Computer Theorem Proving (CTP). On CTP's present development towards industrial use in software and systems verification, specific domain models involve demand on more and more mathematics, and within mathematics involve demand for more and more features. Thus the proposed implementation of GCD and cancellation follows an actual demand.
   177 
   178 If the implementation is successful, it is planned to be included into the distribution of Isabelle, one of the two dominating CTPs in Europe. As part of the Isabelle distribution it will also serve the {\sisac} project aiming at an educational math assistant under development at RISC Linz and Graz University of Technology.
   179 }
   180 
   181 \newpage
   182 %WN vorerst zu Zwecken der "Ubersicht lassen ...
   183 \tableofcontents
   184 
   185 \section{Background}
   186 The \sisac-project is a research and development project launched at the Institute for Software Technology of the Graz University of Technology (TUG) and now continued at the Research Institute for Symbolic Computation (RISC) of University of Linz and at the Institute for Information Systems and Computer Media (IICM) of TUG. The resulting \sisac{} prototype is a ``transparent single-stepping system for applied mathematics'' based on the computer theorem prover Isabelle. The prototype has been proven useful in field tests at Austrain schools \cite{imst-htl06-SH,imst-htl07-SH,imst-hpts08-SH} and is now extended for wider use.
   187 
   188 Authoring knowledge in \sisac{} provides a strict separation of concerns between authoring math knowledge and authoring dialogues. The latter is pursued at IICM, the former is concern of this thesis. Math authoring is done by use of a CTP-based programming language \cite{plmms10} or by use of SML \cite{pl:milner97} as the meta language and implementation language of Isabelle. Since the code resulting from this thesis shall serve Isabelle, it will be written in SML. Via Isabelle distribution this thesis shall also serve \sisac; a re-implementation in \sisac's CTP-based language is planned as a subsequent project -- this will make cancellation transparent for singe-stepping.
   189 
   190 %The special is an easy readable knowledge base including Isabelles HOL-theories and a transparently working knowledge interpreter (a generalization of 'single stepping' algebra systems).
   191 %The background to both, development and research, is given by actual needs in math education as well as by foundamental questions about 'the mechanization of thinking' as an essential aspect in mathematics and in technology.
   192 %The \sisac-system under construction comprises a tutoring-system and an authoring-system. The latter provides for adaption to various needs of individual users and educational institutions and for extensions to arbitrary fields of applied mathematics.
   193 
   194 TODO.WN111107 bitte googeln und je einen Absatz kopieren + zitieren woher (PLAGIATsgefahr):\\
   195 European provers: Isabelle \cite{Nipkow-Paulson-Wenzel:2002}, Coq \cite{Huet_all:94}\\
   196 American provers: PVS~\cite{pvs}, ACL2~\footnote{http://userweb.cs.utexas.edu/~moore/acl2/}\\
   197 
   198 \section{Goal of the thesis}
   199 \subsection{Current situation}
   200 At the presetn time there is no implimentation for the problem of canceling fractions in Isabelle, and a deficient one in \sisac. But because canceling is important for calculating with fractions a new implimentation is necessary.
   201 
   202 \subsection{Problem} 
   203 The wish is to handle fractions in \sisac{} not only in one variable also in more. So the goal of this thesis ist to find, assess and evaluate the existing algorithms and methods for finding the GCD. This will be an functional programm with the posibility to include it into Isabelle, where it will be used by \sisac{} as well.
   204 
   205 %WN eine pr"azisere Beschreibung des Problems kann ich mir nicht vorstellen (englische Version der Mail haben wir auch, aber sie passt nicht zur deutschen Antwort von Prof.Nipkow) ...
   206 \bigskip
   207 A mail to Prof. Nipkow, leader of the development of Isabelle \cite{Nipkow-Paulson-Wenzel:2002} at TU M\"unchen, Mon, 23 May 2011 08:58:14 +0200 describes the problem as follows:
   208 \begin{verbatim}
   209 Eine erste Idee, wie die Integration der Diplomarbeit f"ur
   210 einen Benutzer von Isabelle aussehen k"onnte, w"are zum 
   211 Beispiel im
   212 
   213    lemma cancel:
   214      assumes asm3: "x2 - x*y \<noteq> 0" and asm4: "x \<noteq> 0"
   215      shows "(x2 - y2) / (x2 - x*y) = (x + y) / (x::real)"
   216      apply (insert asm3 asm4)
   217      apply simp
   218    sorry
   219 
   220 die Assumptions
   221 
   222    asm1: "(x2 - y2) = (x + y) * (x - y)" and asm2: "x2 - x*y = x * (x - y)"
   223 
   224 im Hintergrund automatisch zu erzeugen (mit der Garantie, 
   225 dass "(x - y)" der GCD ist) und sie dem Simplifier (f"ur die 
   226 Rule nonzero_mult_divide_mult_cancel_right) zur Verf"ugung zu 
   227 stellen, sodass anstelle von "sorry" einfach "done" stehen kann.
   228 Und weiters w"are eventuell asm3 zu "x - y \<noteq> 0" zu vereinfachen, 
   229 eine Rewriteorder zum Herstellen einer Normalform festzulegen, etc.
   230 \end{verbatim}
   231 %WN und eine bessere Motivation f"ur eine Master Thesis kann ich mir auch nicht vorstellen ...
   232 Response of Prof. Nipkow:
   233 
   234 \begin{verbatim}
   235 Unser Spezialist fuer die mathematischen Theorien ist Johannes H"olzl. 
   236 Etwas allgemeinere Fragen sollten auf jeden Fall an isabelle-dev@ 
   237 gestellt werden.
   238 
   239 Viel Erfolg bei der Arbeit!
   240 Tobias Nipkow
   241 \end{verbatim}
   242 
   243 
   244 \subsection{Expected results}
   245 Implementation of algorithms for the different problems, and find out which one will be the best for the specific requirements in Isabelle.\\
   246 The program should accomplish:
   247 \begin{itemize}
   248 \item Real and rational coefficients. Maybe also imaginary coefficients.
   249 \item Canceling and adding multivariate polynomials, when they are in normal form.
   250 \end{itemize}
   251 The program will be written in the functional programming language SML with appropriate comments. The resulting code shall meet the coding standards of Isabelle \cite{isar-impl} p.3-10. The integration of the code into the Isabelle distribution will be done by the Isabelle developer team.
   252 
   253 \section{State of the art}
   254 In a broad view the context of this thesis can be seen as ``computation and deduction'': simplification and in particular cancellation of rational terms is concern of \textbf{computation} implemented in Computer Algebra Systems (CAS) --- whereas the novelty within the thesis is given by an implementation of cancellation in a computer theorem prover (CTP), i.e. in the domain of \textbf{deduction} with respective logical rigor not addressed in the realm of CAS.
   255 
   256 Below, after a general survey on computation, represented by CAS, and on deduction, represented by CTP, a more narrow view on ``CAS-functionality in CTP'' is pursued.
   257 
   258 \subsection{Computer Algebra and Proof Assistants}
   259 %WN achtung: diese subsection is fast w"ortlich kopiert aus \cite{plmms10} -- also in der Endfassung bitte "uberarbeiten !!!
   260 Computer Algebra and Proof Assistants have coexisted for a many years so there is much research trying to bridge the gap between these approaches from both sides. We shall continue to abbreviate Computer Algebra (Systems) by ``CAS'', and in analogy we shall abbreviate proof assistants by CTP, computer theorem provig (comprising both, interactive theorem proving (ITP) and automated theorem proving (ATP), since in CTP there are ATP-tools included today.)
   261 
   262 First, many CTPs already have CAS-like functionality,
   263 especially for domains like arithmetic. They provide the user
   264 with conversions, tactics or decision procedures that solve
   265 problems in a particular domain. Such decision procedures present
   266 in the standard library of HOL Light~\footnote{http://www.cl.cam.ac.uk/~jrh13/hol-light/} are used inside the
   267 prototype described in Sect.\ref{cas-funct} on p.\pageref{part-cond} for arithmetic's,
   268 symbolic differentiation and others.
   269 
   270 Similarly some CAS systems provide environments that allow
   271 logical reasoning and proving properties within the system. Such
   272 environments are provided either as logical
   273 extensions (e.g.~\cite{logicalaxiom}) or are implemented within a
   274 CAS using its language~\cite{theorema00}.
   275 
   276 There are numerous architectures for information exchange between
   277 CAS and CTP with different levels of \emph{degree of trust}
   278 between the prover and the CAS. In principle, there are several approaches. 
   279 If CAS-functionality is not fully embedded in CTP, CAS can be called as ``oracles'' nevertheless (for efficiency reasons, in general) --- their results are regarded like prophecies of Pythia in Delphi. There are three kinds of checking oracles, however:
   280 \begin{enumerate}
   281 \item Just adopt the CAS result without any check. Isabelle internally marks such results.
   282 \item Check the result inside CTP. There are many cases, where such checks are straight forward, for instance, checking the result of factorization by multiplication of the factors, or checking integrals by differentiation.
   283 \item Generate a derivation of the result within CTP; in Isabelle this is called ``proof reconstruction''.
   284 \end{enumerate}
   285 A longer list of frameworks for
   286 information exchange and bridges between systems can be found
   287 in~\cite{casproto}.
   288 
   289 There are many approaches to defining partial functions in proof
   290 assistants. Since we would like the user to define functions
   291 without being exposed to the underlying logic of the proof
   292 assistant we only mention some automated mechanisms for defining
   293 partial functions in the logic of a CTP.
   294 Krauss~\cite{krauss} has developed a framework for defining
   295 partial recursive functions in Isabelle/HOL, which formally
   296 proves termination by searching for lexicographic combinations of
   297 size measures. Farmer~\cite{farmer} implements a scheme for
   298 defining partial recursive functions in \textrm{IMPS}.
   299 
   300 \subsection{Motivation for CAS-functionality in CTP}
   301 In the realm of CTP formuas are dominated by quantifiers $\forall$, $\exists$ and $\epsilon$ (such) and by operations like $\Rightarrow$, $\land$ and $\lor$. Numbers were strangers initially; numerals have been introduced to Isabelle not much before the year 2000~\footnote{In directory src/Provers/Arith/ see the files cancel\_numerals.ML and cancel\_numeral\_factor.ML in the Isabelle distribution 2011. They still use the notation $\#1,\#2,\#3,\dots$ from before 2000~!}. However, then numerals have been implemented with {\em polymorphic type} such that $2\cdot r\cdot\pi$ ($2$ is type \textit{real}) and $\pi_{\it approx}=3.14\,\land\, 2\cdot r\cdot\pi_{\it approx}$ can be written as well as $\sum_i^n i=\frac{n\cdot(n+1)}{2}$ ($2$ is type \textit{nat}). The different types are inferred by Hindle-Milner type inference \cite{damas-milner-82,Milner-78,Hindley-69}.
   302 
   303 1994 was an important year for CTP: the Pentium Bug caused excitement in the IT community all around the world and motivated INTEL to invest greatly into formal verification of circuits (which carried over to verification of software). Not much later John Harrison mechanized real numbers as Dedekind Cuts in HOL Light \footnote{http://www.cl.cam.ac.uk/~jrh13/hol-light/} and derived calculus, derivative and integral from that definition \cite{harr:thesis}, an implementation which has been transferred to Isabelle very soon after that~\footnote{In the directory src/HOL/Multivariate\_Analysis/ see the files Gauge\_Measure.thy, Integration.thy, Derivative.thy, Real\_Integration.thy, Brouwer\_Fixpoint.thy, Fashoda.thy}.
   304 
   305 Harrison also says that ``CAS are ill-defined'' and gives, among others, an example relevant for this thesis on cancellation: TODO.WN111104 search for ... meromorphic functions in http://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-428.ps.gz
   306 
   307 \medskip
   308 The main motivation for further introduction of CAS-functionality to CTP is also technology-driven: In this decade domain engineering is becoming an academic discipline with industrial relevance \cite{db:dom-eng}: vigorous efforts extend the scope of formal specifications even beyond software technology, and thus respective domains of mathematical knowledge are being mechanized in CTP. The Archive of Formal Proofs~\footnote{http://afp.sourceforge.net/} is Isabelle's repository for such work.
   309 
   310 \subsection{Simplification within CTP}
   311 Cancellation, the topic of this thesis, is a specific part of simplification of rationals. In the realm of CAS cancellation is {\em not} an interesting part of the state of the art, because cancellation has been implemented in the prevailing CAS more than thirty years ago --- however, cancellation of multivariate polynomials is {\em not} yet implemted in any of the dominating CTPs.
   312 %WN: bitte mit Anfragen an die Mailing-Listen nachpr"ufen: Coq, HOL, ACL2, PVS
   313 
   314 As in other CTPs, in Isabelle the simplifier is a powerful software component; the sets of rewrite rules, called \textit{simpsets}, contain several hundreds of elements. Rewriting is still very efficient, because the simpsets are transformed to term nets \cite{term-nets}.
   315 
   316 Rational terms of multivariate polynomials still have a normal form \cite{bb-loos} and thus equivalence of respective terms is decidable. This is not the case, however, with terms containing roots or transcedent functions. Thus, CAS are unreliable by design in these cases.
   317 
   318 In CTP, simplification of non-decidable domains is already an issue, as can be seem in the mail with subject ``simproc divide\_cancel\_factor produces error'' in the mailing-list \textit{isabelle-dev@mailbroy.informatik.tu-muenchen.de} from Thu, 15 Sep 2011 16:34:12 +0200
   319 {%\footnotesize --- HILFT NICHTS
   320 \begin{verbatim}
   321 Hi everyone,
   322 
   323 in the following snippet, applying the simplifier causes an error:
   324 
   325 ------------------------------------------
   326 theory Scratch
   327   imports Complex_Main
   328 begin
   329 
   330 lemma
   331   shows "(3 / 2) * ln n = ((6 * k * ln n) / n) * ((1 / 2 * n / k) / 2)"
   332 apply simp
   333 ------------------------------------------
   334 
   335 outputs
   336 
   337 ------------------------------------------
   338 Proof failed.
   339 (if n = 0 then 0 else 6 * (k * ln n) / 1) * 2 / (4 * k) =
   340 2 * (Numeral1 * (if n = 0 then 0 else 6 * (k * ln n) / 1)) / (2 * (2 * k))
   341  1. n \not= Numeral0 \rightarrow k * (ln n * (2 * 6)) / (k * 4) = k * (ln n * 12) / (k * 4)
   342 1 unsolved goal(s)!
   343 The error(s) above occurred for the goal statement:
   344 (if n = 0 then 0 else 6 * (k * ln n) / 1) * 2 / (4 * k) =
   345 2 * (Numeral1 * (if n = 0 then 0 else 6 * (k * ln n) / 1)) / (2 * (2 * k))
   346 ------------------------------------------
   347 \end{verbatim}
   348 }
   349 Mail ``Re: simproc divide\_cancel\_factor produces error'' on Fri, 16 Sep 2011 22:33:36 +0200
   350 \begin{verbatim}
   351 > > After the release, I'll have to think about doing a complete overhaul
   352 > > of all of the cancellation simprocs.
   353 You are very welcome to do so.  Before you start, call on me and I will
   354 write down some ideas I had long ago (other may want to join, too).
   355 \end{verbatim}
   356 %WN: bist du schon angemeldet in den Mailing-Listen isabelle-users@ und isabelle-dev@ ? WENN NICHT, DANN WIRD ES H"OCHSTE ZEIT !!!
   357 
   358 \subsection{Open Issues with CAS-functionality in CTP}\label{cas-funct}
   359 There is at least one effort explicitly dedicated to implement CAS-functionality in CTP \cite{cezary-phd}. %WN bitte unbedingt lesen (kann von mir in Papierform ausgeborgt werden) !!!
   360 In this work three issues has been identified: partiality conditions, multi-valued functions and real numbers. These issues are addressed in the subsequent paragraphs, followed by a forth issue raised by \sisac{}.
   361 
   362 \paragraph{Partiality conditions}\label{part-cond} are introduced by partial functions or by conditional rewriting. An example of how the CAS-functionality \cite{cezary-phd} looks like is given on p.\pageref{fig:casproto}. 
   363 \cite{cezary-phd} gives an introductory example (floated to p.\pageref{fig:casproto}) which will be referred to in the sequel.
   364 \input{thol.tex}
   365 %WN das nachfolgende Format-Problem l"osen wir sp"ater ...
   366 \begin{figure}[hbt]
   367 \begin{center}
   368 \begin{holnb}
   369   In1 := vector [\&2; \&2] - vector [\&1; \&0] + vec 1
   370  Out1 := vector [\&2; \&3]
   371   In2 := diff (diff (\Lam{}x. \&3 * sin (\&2 * x) +
   372          \&7 + exp (exp x)))
   373  Out2 := \Lam{}x. exp x pow 2 * exp (exp x) +
   374          exp x * exp (exp x) + -- \&12 * sin (\&2 * x)
   375   In3 := N (exp (\&1)) 10
   376  Out3 := #2.7182818284 + ... (exp (\&1)) 10 F
   377   In4 := x + \&1 - x / \&1 + \&7 * (y + x) pow 2
   378  Out4 := \&7 * x pow 2 + \&14 * x * y + \&7 * y pow 2 + \&1
   379   In5 := sum (0,5) (\Lam{}x. \&x * \&x)
   380  Out5 := \&30
   381   In6 := sqrt (x * x) assuming x > &1
   382  Out6 := x
   383 \end{holnb}
   384 \end{center}
   385 \caption{\label{fig:casproto}Example interaction with the prototype
   386   CAS-like input-response loop. For the user input given in the
   387   \texttt{In} lines, the system produces the output in \texttt{Out}
   388   lines together with HOL Light theorems that state the equality
   389   between the input and the output.}
   390 \end{figure}
   391 In lines {\tt In6, Out6} this examples shows how to reliably simplify $\sqrt{x}$. \cite{caspartial} gives more details on handling side conditions in formalized partial functions.
   392 
   393 Analoguous to this example, cancellations (this thesis is concerned with) like
   394 $$\frac{x^2-y^2}{x^2-x\cdot y}=\frac{x+y}{x}\;\;\;\;{\it assuming}\;x-y\not=0\land x\not=0$$
   395 produce assumptions, $x-y\not=0, x\not=0$ here. Since the code produced in the framework of this thesis will be implemented in Isabelle's simplifier (outside this thesis), the presentation to the user will be determined by Isabelle and \sisac{}{} using the respective component of Isabelle. Also reliable handling of assumptions like $x-y\not=0, x\not=0$ is up to these systems.
   396 
   397 \paragraph{Multi-valued functions:}\label{multi-valued}
   398 \cite{seeingroots,davenp-multival-10} discuss cases where CAS are error prone when dropping a branch of a multi-valued function~\footnote{``Multivalued \textit{function}'' is a misnomer, since the value of a function applied to a certain argument is unique by definition of function.}. Familiar examples are ...
   399 %TODO.WN111104 ... zur Erkl"arung ein paar Beispiele von http://en.wikipedia.org/wiki/Multivalued_function
   400 
   401 \paragraph{Real numbers} cannot be represented by numerals. In engineering applications, however, approximation by floating-point numbers are frequently useful. In CTP floating-point numbers must be handled rigorously as approximations. Already \cite{harr:thesis} introduced operations on real numerals accompanied by rigorous calculation of precision. \cite{russellphd} describes efficient implementation of infinite precision real numbers in Coq.
   402 
   403 \paragraph{All solutions for equations} must be guaranted, if equation solving is embedded within CTP. So, given an equation $f(x)=0$ and the set of solutions $S$ of this equation, we want to have both,
   404 \begin{eqnarray}
   405    \exists x_s.\;x_s\in S &\Rightarrow& f(x_s) = 0 \\\label{is-solut}
   406   x_s\in S &\Leftarrow& \exists x_s.\;f(x_s) = 0    \label{all-solut}
   407 \end{eqnarray}
   408 where (\ref{all-solut}) ensures that $S$ contains {\em all} solutions of the equation. The \sisac{}-project has implemented a prototype of an equation solver~\footnote{See \textit{equations} in the hierarchy of specifications at http://www.ist.tugraz.at/projects/isac/www/kbase/pbl/index\_pbl.html}.
   409 
   410 There is demand for fullfledged equation solving in CTP, including equational systems and differential equations, because \sisac{}{} has a prototype of a CTP-based programming language calling CAS functions; and Lucas-Interpretation \cite{wn:lucas-interp-12} makes these functions accessible by single-stepping and ``next step guidance'', which would automatically generate a learning system for equation solving.
   411 
   412 \subsection{Algorithms for cancellation of multivariate polynomials}
   413 The most appropriate book for implementing the required algorithms in this thesis is \cite{Winkler:96}. TODO.WN111104 welche noch ?
   414 
   415 \section{Thesis structure}
   416 The proposed table of contents of the thesis on the chapter level is as follows:
   417 \begin{enumerate}
   418 	\item Introduction (2-3 pages)
   419 	\item Computer Algebra Systems (CAS) (5 - 7 pages)\\
   420 	Which different CAS exists and whats the focus of them.
   421 	\item The \sisac{}-Project (5 - 7 pages)\\
   422 	This chapter will describe the \sisac{}-Project and the goals of the project.
   423 	\item Univariate Polynomials (15-20 pages)\\
   424 	This chapter will describe different Algorithms for univariate polynomials, with different coefficients.
   425 	\item Multivariate Polynomials (20-25 pages)\\
   426 	This chapter will describe different Algorithms for multivariate polynomials,  with different coefficients
   427 	\item Functional programming and SML(2-5 pages)\\
   428 	The basic idea of this programming languages.
   429 	\item Implimentation in \sisac{}-Project (15-20 pages)
   430 	\item Conclusion (2-3 pages)
   431 \end{enumerate}
   432 %\newpage
   433 
   434 \section{Timeline}
   435 %Werd nie fertig.\\
   436 \begin{center}
   437 		\begin{tabular}{|l|l|l|}
   438 		\hline
   439 			 \textbf{Time}&\textbf{Thesis}&\textbf{Project}\\
   440 			 \hline
   441 			 & Functional programming & Learning the basics and the idea\\
   442 			 & & of funcional programming\\
   443 			 \hline
   444 			 & Different CAS & Can they handle the problem \\
   445 			 & &and which algorithm do they use?\\ \hline
   446 			 & Univariate Polynomials & Implementation of the Algorithm\\
   447 			 & & for univariate Polynomials \\ \hline
   448 		   & Multivariate Polynomials &  Implementation of the Algorithm\\
   449 			 & & for multivariate Polynomials \\ \hline 
   450 		   & The \sisac-Project &\\ \hline
   451 		   & Conclusion and Introduction & Find good examples for testing\\
   452 			\hline
   453 		\end{tabular}
   454 	\end{center}
   455 
   456 %WN oben an passender stelle einf"ugen
   457 \cite{einf-funct-progr}
   458 		
   459 		
   460 \bibliography{bib/math-eng,bib/didact,bib/bk,bib/RISC_2,bib/isac,bib/pl,bib/math,references}
   461 %\section{Bibliography}
   462 %%mindestens 10
   463 %\begin{enumerate}
   464 % \item Bird/Wadler, \textit{Einführung in die funktionale Programmierung}, Carl Hanser and Prentice-Hall International, 1992
   465 % \item Franz Winkler, \textit{Polynomial Algorithms in Computer Algebra}, Springer,1996
   466 % \item %M. Mignotte, \textit{An inequality about factors of polynomial}
   467 % \item %M. Mignotte, \textit{Some useful bounds}
   468 % \item %W. S. Brown and J. F. Traub. \textit{On euclid's algorithm and the theory of subresultans}, Journal of the ACM (JACM), 1971
   469 % \item %Bruno Buchberger, \textit{Algorhimic mathematics: Problem types, data types, algorithm types}, Lecture notes, RISC Jku A-4040 Linz, 1982
   470 % 
   471 % \item %Tateaki Sasaki and Masayuki Suzuki, \textit{Thre new algorithms for multivariate polynomial GCD}, J. Symbolic Combutation, 1992
   472 % \item
   473 % \item
   474 % \item
   475 %\end{enumerate} 
   476 
   477 \end{document}
   478 
   479 ALLES UNTERHALB \end{document} WIRD VON LATEX NICHT BERUECKSICHTIGT
   480 WN110916 grep-ing through Isabelle code:
   481 
   482 neuper@neuper:/usr/local/isabisac/src$ find -name "*umeral*"
   483 ./HOL/ex/Numeral.thy
   484 ./HOL/Tools/nat_numeral_simprocs.ML
   485 ./HOL/Tools/numeral_syntax.ML
   486 ./HOL/Tools/numeral.ML
   487 ./HOL/Tools/numeral_simprocs.ML
   488 ./HOL/Matrix/ComputeNumeral.thy
   489 ./HOL/Library/Numeral_Type.thy
   490 ./HOL/Numeral_Simprocs.thy
   491 ./HOL/Import/HOL/numeral.imp
   492 ./HOL/Code_Numeral.thy
   493 ./HOL/Nat_Numeral.thy
   494 ./ZF/Tools/numeral_syntax.ML
   495 ./Provers/Arith/cancel_numeral_factor.ML
   496 ./Provers/Arith/cancel_numerals.ML
   497 ./Provers/Arith/combine_numerals.ML
   498 
   499 neuper@neuper:/usr/local/isabisac/src$ find -name "*ancel*"
   500 ./HOL/Tools/abel_cancel.ML                 
   501 ./Provers/Arith/cancel_div_mod.ML
   502 ./Provers/Arith/cancel_numeral_factor.ML  Paulson 2000 !!!
   503 ./Provers/Arith/cancel_sums.ML            
   504 ./Provers/Arith/cancel_numerals.ML        Paulson 2000