doc-src/isac/jrocnik/eJMT-paper/jrocnik_eJMT.tex
author Jan Rocnik <jan.rocnik@student.tugraz.at>
Sun, 09 Sep 2012 12:48:30 +0200
changeset 42473 36e2e192f716
parent 42470 aafbbd5a85a5
child 42475 d856a6f9e82a
child 42477 3c0590a3a3b5
permissions -rwxr-xr-x
jrocnik: paper: beauty operations, warning suspressions, minor content adding
     1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     2 % Electronic Journal of Mathematics and Technology (eJMT) %
     3 % style sheet for LaTeX.  Please do not modify sections   %
     4 % or commands marked 'eJMT'.                              %
     5 %                                                         %
     6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     7 %                                                         %
     8 % eJMT commands                                           %
     9 %                                                         %
    10 \documentclass[12pt,a4paper]{article}%                    %
    11 \usepackage{times}                                        %
    12 \usepackage{amsfonts,amsmath,amssymb}                     %
    13 \usepackage[a4paper]{geometry}                            %
    14 \usepackage{fancyhdr}                                     %
    15 \usepackage{color}                                        %
    16 \usepackage[pdftex]{hyperref} % see note below            %
    17 \usepackage{graphicx}%                                    %
    18 \hypersetup{                                              %
    19     a4paper,                                              %
    20     breaklinks                                            %
    21 }                                                         %
    22 %                                                         %
    23 \newtheorem{theorem}{Theorem}                             %
    24 \newtheorem{acknowledgement}[theorem]{Acknowledgement}    %
    25 \newtheorem{algorithm}[theorem]{Algorithm}                %
    26 \newtheorem{axiom}[theorem]{Axiom}                        %
    27 \newtheorem{case}[theorem]{Case}                          %
    28 \newtheorem{claim}[theorem]{Claim}                        %
    29 \newtheorem{conclusion}[theorem]{Conclusion}              %
    30 \newtheorem{condition}[theorem]{Condition}                %
    31 \newtheorem{conjecture}[theorem]{Conjecture}              %
    32 \newtheorem{corollary}[theorem]{Corollary}                %
    33 \newtheorem{criterion}[theorem]{Criterion}                %
    34 \newtheorem{definition}[theorem]{Definition}              %
    35 \newtheorem{example}[theorem]{Example}                    %
    36 \newtheorem{exercise}[theorem]{Exercise}                  %
    37 \newtheorem{lemma}[theorem]{Lemma}                        %
    38 \newtheorem{notation}[theorem]{Notation}                  %
    39 \newtheorem{problem}[theorem]{Problem}                    %
    40 \newtheorem{proposition}[theorem]{Proposition}            %
    41 \newtheorem{remark}[theorem]{Remark}                      %
    42 \newtheorem{solution}[theorem]{Solution}                  %
    43 \newtheorem{summary}[theorem]{Summary}                    %
    44 \newenvironment{proof}[1][Proof]{\noindent\textbf{#1.} }  %
    45 {\ \rule{0.5em}{0.5em}}                                   %
    46 %                                                         %
    47 % eJMT page dimensions                                    %
    48 %                                                         %
    49 \geometry{left=2cm,right=2cm,top=3.2cm,bottom=4cm}        %
    50 %                                                         %
    51 % eJMT header & footer                                    %
    52 %                                                         %
    53 \newcounter{ejmtFirstpage}                                %
    54 \setcounter{ejmtFirstpage}{1}                             %
    55 \pagestyle{empty}                                         %
    56 \setlength{\headheight}{14pt}                             %
    57 \geometry{left=2cm,right=2cm,top=3.2cm,bottom=4cm}        %
    58 \pagestyle{fancyplain}                                    %
    59 \fancyhf{}                                                %
    60 \fancyhead[c]{\small The Electronic Journal of Mathematics%
    61 \ and Technology, Volume 1, Number 1, ISSN 1933-2823}     %
    62 \cfoot{%                                                  %
    63   \ifnum\value{ejmtFirstpage}=0%                          %
    64     {\vtop to\hsize{\hrule\vskip .2cm\thepage}}%          %
    65   \else\setcounter{ejmtFirstpage}{0}\fi%                  %
    66 }                                                         %
    67 %                                                         %
    68 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    69 %
    70 % Please place your own definitions here
    71 %
    72 \def\isac{${\cal I}\mkern-2mu{\cal S}\mkern-5mu{\cal AC}$}
    73 \def\sisac{\footnotesize${\cal I}\mkern-2mu{\cal S}\mkern-5mu{\cal AC}$}
    74 
    75 \usepackage{color}
    76 \definecolor{lgray}{RGB}{238,238,238}
    77 
    78 %
    79 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    80 %                                                         %
    81 % How to use hyperref                                     %
    82 % -------------------                                     %
    83 %                                                         %
    84 % Probably the only way you will need to use the hyperref %
    85 % package is as follows.  To make some text, say          %
    86 % "My Text Link", into a link to the URL                  %
    87 % http://something.somewhere.com/mystuff, use             %
    88 %                                                         %
    89 % \href{http://something.somewhere.com/mystuff}{My Text Link}
    90 %                                                         %
    91 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    92 %
    93 \begin{document}
    94 %
    95 % document title
    96 %
    97 \title{Trials with TP-based Programming
    98 \\
    99 for Interactive Course Material}%
   100 %
   101 % Single author.  Please supply at least your name,
   102 % email address, and affiliation here.
   103 %
   104 \author{\begin{tabular}{c}
   105 \textit{Jan Ro\v{c}nik} \\
   106 jan.rocnik@student.tugraz.at \\
   107 IST, SPSC\\
   108 Graz University of Technologie\\
   109 Austria\end{tabular}
   110 }%
   111 %
   112 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   113 %                                                         %
   114 % eJMT commands - do not change these                     %
   115 %                                                         %
   116 \date{}                                                   %
   117 \maketitle                                                %
   118 %                                                         %
   119 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   120 %
   121 % abstract
   122 %
   123 \begin{abstract}
   124 
   125 Traditional course material in engineering disciplines lacks an
   126 important component, interactive support for step-wise problem
   127 solving. Theorem-Proving (TP) technology is appropriate for one part
   128 of such support, in checking user-input. For the other part of such
   129 support, guiding the learner towards a solution, another kind of
   130 technology is required. %TODO ... connect to prototype ...
   131 
   132 A prototype combines TP with a programming language, the latter
   133 interpreted in a specific way: certain statements in a program, called
   134 tactics, are treated as breakpoints where control is handed over to
   135 the user. An input formula is checked by TP (using logical context
   136 built up by the interpreter); and if a learner gets stuck, a program
   137 describing the steps towards a solution of a problem ``knows the next
   138 step''. This kind of interpretation is called Lucas-Interpretation for
   139 \emph{TP-based programming languages}.
   140 
   141 This paper describes the prototype's TP-based programming language
   142 within a case study creating interactive material for an advanced
   143 course in Signal Processing: implementation of definitions and
   144 theorems in TP, formal specification of a problem and step-wise
   145 development of the program solving the problem. Experiences with the
   146 ork flow in iterative development with testing and identifying errors
   147 are described, too. The description clarifies the components missing
   148 in the prototype's language as well as deficiencies experienced during
   149 programming.
   150 \par
   151 These experiences are particularly notable, because the author is the
   152 first programmer using the language beyond the core team which
   153 developed the prototype's TP-based language interpreter.
   154 %
   155 \end{abstract}%
   156 %
   157 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   158 %                                                         %
   159 % eJMT command                                            %
   160 %                                                         %
   161 \thispagestyle{fancy}                                     %
   162 %                                                         %
   163 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   164 %
   165 % Please use the following to indicate sections, subsections,
   166 % etc.  Please also use \subsubsection{...}, \paragraph{...}
   167 % and \subparagraph{...} as necessary.
   168 %
   169 
   170 \section{Introduction}\label{intro}
   171 
   172 % \paragraph{Didactics of mathematics} 
   173 %WN: wenn man in einem high-quality paper von 'didactics' spricht, 
   174 %WN muss man am state-of-the-art ankn"upfen -- siehe
   175 %WN W.Neuper, On the Emergence of TP-based Educational Math Assistants
   176 % faces a specific issue, a gap
   177 % between (1) introduction of math concepts and skills and (2)
   178 % application of these concepts and skills, which usually are separated
   179 % into different units in curricula (for good reasons). For instance,
   180 % (1) teaching partial fraction decomposition is separated from (2)
   181 % application for inverse Z-transform in signal processing.
   182 % 
   183 % \par This gap is an obstacle for applying math as an fundamental
   184 % thinking technology in engineering: In (1) motivation is lacking
   185 % because the question ``What is this stuff good for?'' cannot be
   186 % treated sufficiently, and in (2) the ``stuff'' is not available to
   187 % students in higher semesters as widespread experience shows.
   188 % 
   189 % \paragraph{Motivation} taken by this didactic issue on the one hand,
   190 % and ongoing research and development on a novel kind of educational
   191 % mathematics assistant at Graz University of
   192 % Technology~\footnote{http://www.ist.tugraz.at/isac/} promising to
   193 % scope with this issue on the other hand, several institutes are
   194 % planning to join their expertise: the Institute for Information
   195 % Systems and Computer Media (IICM), the Institute for Software
   196 % Technology (IST), the Institutes for Mathematics, the Institute for
   197 % Signal Processing and Speech Communication (SPSC), the Institute for
   198 % Structural Analysis and the Institute of Electrical Measurement and
   199 % Measurement Signal Processing.
   200 %WN diese Information ist f"ur das Paper zu spezielle, zu aktuell 
   201 %WN und damit zu verg"anglich.
   202 % \par This thesis is the first attempt to tackle the above mentioned
   203 % issue, it focuses on Telematics, because these specific studies focus
   204 % on mathematics in \emph{STEOP}, the introductory orientation phase in
   205 % Austria. \emph{STEOP} is considered an opportunity to investigate the
   206 % impact of {\sisac}'s prototype on the issue and others.
   207 % 
   208 
   209 \paragraph{Traditional course material} in engineering disciplines lacks an
   210 important component, interactive support for step-wise problem
   211 solving. Theorem-Proving (TP) technology can provide such support by
   212 specific services. An important part of such services is called
   213 ``next-step-guidance'', generated by a specific kind of ``TP-based
   214 programming language''. In the
   215 {\sisac}-project~\footnote{http://www.ist.tugraz.at/projects/isac/} such
   216 a language is prototyped in line with~\cite{plmms10} and built upon
   217 the theorem prover
   218 Isabelle~\cite{Nipkow-Paulson-Wenzel:2002}\footnote{http://isabelle.in.tum.de/}.
   219 The TP services are coordinated by a specific interpreter for the
   220 programming language, called
   221 Lucas-Interpreter~\cite{wn:lucas-interp-12}. The language and the
   222 interpreter will be briefly re-introduced in order to make the paper
   223 self-contained.
   224 
   225 \subparagraph{The main part} of the paper is an account of first experiences
   226 with programming in this TP-based language. The experience was gained
   227 in a case study by the author. The author was considered an ideal
   228 candidate for this study for the following reasons: as a student in
   229 Telematics (computer science with focus on Signal Processing) he had
   230 general knowledge in programming as well as specific domain knowledge
   231 in Signal Processing; and he was not involved in the development of
   232 {\sisac}'s programming language and interpeter, thus a novice to the
   233 language.
   234 
   235 \subparagraph{The goal} of the case study was (1) some TP-based programs for
   236 interactive course material for a specific ``Adavanced Signal
   237 Processing Lab'' in a higher semester, (2) respective program
   238 development with as little advice from the {\sisac}-team and (3) records
   239 and comments for the main steps of development in an Isabelle theory;
   240 this theory should provide guidelines for future programmers. An
   241 excerpt from this theory is the main part of this paper.
   242 \par
   243 The paper will use the problem in Fig.\ref{fig-interactive} as a
   244 running example:
   245 \begin{figure} [htb]
   246 \begin{center}
   247 \includegraphics[width=140mm]{fig/isac-Ztrans-math-3}
   248 %\includegraphics[width=140mm]{fig/isac-Ztrans-math}
   249 \caption{Step-wise problem solving guided by the TP-based program}
   250 \label{fig-interactive}
   251 \end{center}
   252 \end{figure}
   253 
   254 \paragraph{The problem is} from the domain of Signal Processing and requests to
   255 determine the inverse Z-transform for a given term. Fig.\ref{fig-interactive}
   256 also shows the beginning of the interactive construction of a solution
   257 for the problem. This construction is done in the right window named
   258 ``Worksheet''.
   259 \par
   260 User-interaction on the Worksheet is {\em checked} and {\em guided} by
   261 TP services:
   262 \begin{enumerate}
   263 \item Formulas input by the user are {\em checked} by TP: such a
   264 formula establishes a proof situation --- the prover has to derive the
   265 formula from the logical context. The context is built up from the
   266 formal specification of the problem (here hidden from the user) by the
   267 Lucas-Interpreter.
   268 \item If the user gets stuck, the program developed below in this
   269 paper ``knows the next step'' from behind the scenes. How the latter
   270 TP-service is exploited by dialogue authoring is out of scope of this
   271 paper and can be studied in~\cite{gdaroczy-EP-13}.
   272 \end{enumerate} It should be noted that the programmer using the
   273 TP-based language is not concerned with interaction at all; we will
   274 see that the program contains neither input-statements nor
   275 output-statements. Rather, interaction is handled by services
   276 generated automatically.
   277 \par
   278 So there is a clear separation of concerns: Dialogues are
   279 adapted by dialogue authors (in Java-based tools), using automatically
   280 generated TP services, while the TP-based program is written by
   281 mathematics experts (in Isabelle/ML). The latter is concern of this
   282 paper.
   283 
   284 \paragraph{The paper is structed} as follows: The introduction
   285 \S\ref{intro} is followed by a brief re-introduction of the TP-based
   286 programming language in \S\ref{PL}, which extends the executable
   287 fragment of Isabelle's language (\S\ref{PL-isab}) by tactics which
   288 play a specific role in Lucas-Interpretation and in providing the TP
   289 services (\S\ref{PL-tacs}). The main part in \S\ref{trial} describes
   290 the main steps in developing the program for the running example:
   291 prepare domain knowledge, implement the formal specification of the
   292 problem, prepare the environment for the program, implement the
   293 program. The workflow of programming, debugging and testing is
   294 described in \S\ref{workflow}. The conclusion \S\ref{conclusion} will
   295 give directions identified for future development. 
   296 
   297 
   298 \section{\isac's Prototype for a Programming Language}\label{PL} 
   299 The prototype's language extends the executable fragment in the
   300 language of the theorem prover
   301 Isabelle~\cite{Nipkow-Paulson-Wenzel:2002}\footnote{http://isabelle.in.tum.de/}
   302 by tactics which have a specific role in Lucas-Interpretation.
   303 
   304 \subsection{The Executable Fragment of Isabelle's Language}\label{PL-isab}
   305 The executable fragment consists of data-type and function
   306 definitions.  It's usability even suggests that fragment for
   307 introductory courses \cite{nipkow-prog-prove}. HOL is a typed logic
   308 whose type system resembles that of functional programming
   309 languages. Thus there are
   310 \begin{description}
   311 \item[base types,] in particular \textit{bool}, the type of truth
   312 values, \textit{nat}, \textit{int}, \textit{complex}, and the types of
   313 natural, integer and complex numbers respectively in mathematics.
   314 \item[type constructors] allow to define arbitrary types, from
   315 \textit{set}, \textit{list} to advanced data-structures like
   316 \textit{trees}, red-black-trees etc.
   317 \item[function types,] denoted by $\Rightarrow$.
   318 \item[type variables,] denoted by $^\prime a, ^\prime b$ etc, provide
   319 type polymorphism. Isabelle automatically computes the type of each
   320 variable in a term by use of Hindley-Milner type inference
   321 \cite{pl:hind97,Milner-78}.
   322 \end{description}
   323 
   324 \textbf{Terms} are formed as in functional programming by applying
   325 functions to arguments. If $f$ is a function of type
   326 $\tau_1\Rightarrow \tau_2$ and $t$ is a term of type $\tau_1$ then
   327 $f\;t$ is a term of type~$\tau_2$. $t\;::\;\tau$ means that term $t$
   328 has type $\tau$. There are many predefined infix symbols like $+$ and
   329 $\leq$ most of which are overloaded for various types.
   330 
   331 HOL also supports some basic constructs from functional programming:
   332 {\it\label{isabelle-stmts}
   333 \begin{tabbing} 123\=\kill
   334 \>$( \; {\tt if} \; b \; {\tt then} \; t_1 \; {\tt else} \; t_2 \;)$\\
   335 \>$( \; {\tt let} \; x=t \; {\tt in} \; u \; )$\\
   336 \>$( \; {\tt case} \; t \; {\tt of} \; {\it pat}_1
   337   \Rightarrow t_1 \; |\dots| \; {\it pat}_n\Rightarrow t_n \; )$
   338 \end{tabbing} }
   339 \noindent \textit{The running example's program uses some of these elements
   340 (marked by {\tt tt-font} on p.\pageref{expl-program}): ${\tt
   341 let}\dots{\tt in}$ in lines $02 \dots 11$, as well as {\tt last} for
   342 lists and {\tt o} for functional (forward) composition in line
   343 $10$. In fact, the whole program is an Isabelle term with specific
   344 function constants like {\sc program}, {\sc Substitute} and {\sc
   345 Rewrite\_Set\_Inst} in lines $01$ and $10$ respectively.}
   346 
   347 % Terms may also contain $\lambda$-abstractions. For example, $\lambda
   348 % x. \; x$ is the identity function.
   349 
   350 %JR warum auskommentiert? WN2...
   351 %WN2 weil ein Punkt wie dieser in weiteren Zusammenh"angen innerhalb
   352 %WN2 des Papers auftauchen m"usste; nachdem ich einen solchen
   353 %WN2 Zusammenhang _noch_ nicht sehe, habe ich den Punkt _noch_ nicht
   354 %WN2 gel"oscht.
   355 %WN2 Wenn der Punkt nicht weiter gebraucht wird, nimmt er nur wertvollen
   356 %WN2 Platz f"ur Anderes weg.
   357 
   358 \textbf{Formulae} are terms of type \textit{bool}. There are the basic
   359 constants \textit{True} and \textit{False} and the usual logical
   360 connectives (in decreasing order of precedence): $\neg, \land, \lor,
   361 \rightarrow$.
   362 
   363 \textbf{Equality} is available in the form of the infix function $=$
   364 of type $a \Rightarrow a \Rightarrow {\it bool}$. It also works for
   365 formulas, where it means ``if and only if''.
   366 
   367 \textbf{Quantifiers} are written $\forall x. \; P$ and $\exists x. \;
   368 P$.  Quantifiers lead to non-executable functions, so functions do not
   369 always correspond to programs, for instance, if comprising \\$(
   370 \;{\it if} \; \exists x.\;P \; {\it then} \; e_1 \; {\it else} \; e_2
   371 \;)$.
   372 
   373 \subsection{\isac's Tactics for Lucas-Interpretation}\label{PL-tacs}
   374 The prototype extends Isabelle's language by specific statements
   375 called tactics~\footnote{{\sisac}'s tactics are different from
   376 Isabelle's tactics: the former concern steps in a calculation, the
   377 latter concern proof steps.}  and tacticals. For the programmer these
   378 statements are functions with the following signatures:
   379 
   380 \begin{description}
   381 \item[Rewrite:] ${\it theorem}\Rightarrow{\it term}\Rightarrow{\it
   382 term} * {\it term}\;{\it list}$:
   383 this tactic appplies {\it theorem} to a {\it term} yielding a {\it
   384 term} and a {\it term list}, the list are assumptions generated by
   385 conditional rewriting. For instance, the {\it theorem}
   386 $b\not=0\land c\not=0\Rightarrow\frac{a\cdot c}{b\cdot c}=\frac{a}{b}$
   387 applied to the {\it term} $\frac{2\cdot x}{3\cdot x}$ yields
   388 $(\frac{2}{3}, [x\not=0])$.
   389 
   390 \item[Rewrite\_Set:] ${\it ruleset}\Rightarrow{\it
   391 term}\Rightarrow{\it term} * {\it term}\;{\it list}$:
   392 this tactic appplies {\it ruleset} to a {\it term}; {\it ruleset} is
   393 a confluent and terminating term rewrite system, in general. If
   394 none of the rules ({\it theorem}s) is applicable on interpretation
   395 of this tactic, an exception is thrown.
   396 
   397 % \item[Rewrite\_Inst:] ${\it substitution}\Rightarrow{\it
   398 % theorem}\Rightarrow{\it term}\Rightarrow{\it term} * {\it term}\;{\it
   399 % list}$:
   400 % 
   401 % \item[Rewrite\_Set\_Inst:] ${\it substitution}\Rightarrow{\it
   402 % ruleset}\Rightarrow{\it term}\Rightarrow{\it term} * {\it term}\;{\it
   403 % list}$:
   404 
   405 \item[Substitute:] ${\it substitution}\Rightarrow{\it
   406 term}\Rightarrow{\it term}$:
   407 
   408 \item[Take:] ${\it term}\Rightarrow{\it term}$:
   409 this tactic has no effect in the program; but it creates a side-effect
   410 by Lucas-Interpretation (see below) and writes {\it term} to the
   411 Worksheet.
   412 
   413 \item[Subproblem:] ${\it theory} * {\it specification} * {\it
   414 method}\Rightarrow{\it argument}\;{\it list}\Rightarrow{\it term}$:
   415 this tactic allows to enter a phase of interactive specification
   416 of a theory ($\Re$, $\cal C$, etc), a formal specification (for instance,
   417 a specific type of equation) and a method (for instance, solving an
   418 equation symbolically or numerically).
   419 
   420 \end{description}
   421 The tactics play a specific role in
   422 Lucas-Interpretation~\cite{wn:lucas-interp-12}: they are treated as
   423 break-points and control is handed over to the user. The user is free
   424 to investigate underlying knowledge, applicable theorems, etc.  And
   425 the user can proceed constructing a solution by input of a tactic to
   426 be applied or by input of a formula; in the latter case the
   427 Lucas-Interpreter has built up a logical context (initialised with the
   428 precondition of the formal specification) such that Isabelle can
   429 derive the formula from this context --- or give feedback, that no
   430 derivation can be found.
   431 
   432 \subsection{Tacticals for Control of Interpretation}
   433 The flow of control in a program can be determined by {\tt if then else}
   434 and {\tt case of} as mentioned on p.\pageref{isabelle-stmts} and also
   435 by additional tacticals:
   436 \begin{description}
   437 \item[Repeat:] ${\it tactic}\Rightarrow{\it term}\Rightarrow{\it
   438 term}$: iterates over tactics which take a {\it term} as argument as
   439 long as a tactic is applicable (for instance, {\it Rewrite\_Set} might
   440 not be applicable).
   441 
   442 \item[Try:] ${\it tactic}\Rightarrow{\it term}\Rightarrow{\it term}$:
   443 if {\it tactic} is applicable, then it is applied to {\it term},
   444 otherwise {\it term} is passed on unchanged.
   445 
   446 \item[Or:] ${\it tactic}\Rightarrow{\it tactic}\Rightarrow{\it
   447 term}\Rightarrow{\it term}$:
   448 
   449 
   450 \item[@@:] ${\it tactic}\Rightarrow{\it tactic}\Rightarrow{\it
   451 term}\Rightarrow{\it term}$:
   452 
   453 \item[While:] ${\it term::bool}\Rightarrow{\it tactic}\Rightarrow{\it
   454 term}\Rightarrow{\it term}$:
   455 
   456 \end{description}
   457 
   458 no input / output --- Lucas-Interpretation
   459 
   460 .\\.\\.\\TODO\\.\\.\\
   461 
   462 \section{Development of a Program on Trial}\label{trial} 
   463 As mentioned above, {\sisac} is an experimental system for a proof of
   464 concept for Lucas-Interpretation~\cite{wn:lucas-interp-12}.  The
   465 latter interprets a specific kind of TP-based programming language,
   466 which is as experimental as the whole prototype --- so programming in
   467 this language can be only ``on trial'', presently.  However, as a
   468 prototype, the language addresses essentials described below.
   469 
   470 \subsection{Mechanization of Math --- Domain Engineering}\label{isabisac}
   471 
   472 %WN was Fachleute unter obigem Titel interessiert findet sich
   473 %WN unterhalb des auskommentierten Textes.
   474 
   475 %WN der Text unten spricht Benutzer-Aspekte anund ist nicht speziell
   476 %WN auf Computer-Mathematiker fokussiert.
   477 % \paragraph{As mentioned in the introduction,} a prototype of an
   478 % educational math assistant called
   479 % {{\sisac}}\footnote{{{\sisac}}=\textbf{Isa}belle for
   480 % \textbf{C}alculations, see http://www.ist.tugraz.at/isac/.} bridges
   481 % the gap between (1) introducation and (2) application of mathematics:
   482 % {{\sisac}} is based on Computer Theorem Proving (TP), a technology which
   483 % requires each fact and each action justified by formal logic, so
   484 % {{{\sisac}{}}} makes justifications transparent to students in
   485 % interactive step-wise problem solving. By that way {{\sisac}} already
   486 % can serve both:
   487 % \begin{enumerate}
   488 %   \item Introduction of math stuff (in e.g. partial fraction
   489 % decomposition) by stepwise explaining and exercising respective
   490 % symbolic calculations with ``next step guidance (NSG)'' and rigorously
   491 % checking steps freely input by students --- this also in context with
   492 % advanced applications (where the stuff to be taught in higher
   493 % semesters can be skimmed through by NSG), and
   494 %   \item Application of math stuff in advanced engineering courses
   495 % (e.g. problems to be solved by inverse Z-transform in a Signal
   496 % Processing Lab) and now without much ado about basic math techniques
   497 % (like partial fraction decomposition): ``next step guidance'' supports
   498 % students in independently (re-)adopting such techniques.
   499 % \end{enumerate} 
   500 % Before the question is answers, how {{\sisac}}
   501 % accomplishes this task from a technical point of view, some remarks on
   502 % the state-of-the-art is given, therefor follow up Section~\ref{emas}.
   503 % 
   504 % \subsection{Educational Mathematics Assistants (EMAs)}\label{emas}
   505 % 
   506 % \paragraph{Educational software in mathematics} is, if at all, based
   507 % on Computer Algebra Systems (CAS, for instance), Dynamic Geometry
   508 % Systems (DGS, for instance \footnote{GeoGebra http://www.geogebra.org}
   509 % \footnote{Cinderella http://www.cinderella.de/}\footnote{GCLC
   510 % http://poincare.matf.bg.ac.rs/~janicic/gclc/}) or spread-sheets. These
   511 % base technologies are used to program math lessons and sometimes even
   512 % exercises. The latter are cumbersome: the steps towards a solution of
   513 % such an interactive exercise need to be provided with feedback, where
   514 % at each step a wide variety of possible input has to be foreseen by
   515 % the programmer - so such interactive exercises either require high
   516 % development efforts or the exercises constrain possible inputs.
   517 % 
   518 % \subparagraph{A new generation} of educational math assistants (EMAs)
   519 % is emerging presently, which is based on Theorem Proving (TP). TP, for
   520 % instance Isabelle and Coq, is a technology which requires each fact
   521 % and each action justified by formal logic. Pushed by demands for
   522 % \textit{proven} correctness of safety-critical software TP advances
   523 % into software engineering; from these advancements computer
   524 % mathematics benefits in general, and math education in particular. Two
   525 % features of TP are immediately beneficial for learning:
   526 % 
   527 % \paragraph{TP have knowledge in human readable format,} that is in
   528 % standard predicate calculus. TP following the LCF-tradition have that
   529 % knowledge down to the basic definitions of set, equality,
   530 % etc~\footnote{http://isabelle.in.tum.de/dist/library/HOL/HOL.html};
   531 % following the typical deductive development of math, natural numbers
   532 % are defined and their properties
   533 % proven~\footnote{http://isabelle.in.tum.de/dist/library/HOL/Number\_Theory/Primes.html},
   534 % etc. Present knowledge mechanized in TP exceeds high-school
   535 % mathematics by far, however by knowledge required in software
   536 % technology, and not in other engineering sciences.
   537 % 
   538 % \paragraph{TP can model the whole problem solving process} in
   539 % mathematical problem solving {\em within} a coherent logical
   540 % framework. This is already being done by three projects, by
   541 % Ralph-Johan Back, by ActiveMath and by Carnegie Mellon Tutor.
   542 % \par
   543 % Having the whole problem solving process within a logical coherent
   544 % system, such a design guarantees correctness of intermediate steps and
   545 % of the result (which seems essential for math software); and the
   546 % second advantage is that TP provides a wealth of theories which can be
   547 % exploited for mechanizing other features essential for educational
   548 % software.
   549 % 
   550 % \subsubsection{Generation of User Guidance in EMAs}\label{user-guid}
   551 % 
   552 % One essential feature for educational software is feedback to user
   553 % input and assistance in coming to a solution.
   554 % 
   555 % \paragraph{Checking user input} by ATP during stepwise problem solving
   556 % is being accomplished by the three projects mentioned above
   557 % exclusively. They model the whole problem solving process as mentioned
   558 % above, so all what happens between formalized assumptions (or formal
   559 % specification) and goal (or fulfilled postcondition) can be
   560 % mechanized. Such mechanization promises to greatly extend the scope of
   561 % educational software in stepwise problem solving.
   562 % 
   563 % \paragraph{NSG (Next step guidance)} comprises the system's ability to
   564 % propose a next step; this is a challenge for TP: either a radical
   565 % restriction of the search space by restriction to very specific
   566 % problem classes is required, or much care and effort is required in
   567 % designing possible variants in the process of problem solving
   568 % \cite{proof-strategies-11}.
   569 % \par
   570 % Another approach is restricted to problem solving in engineering
   571 % domains, where a problem is specified by input, precondition, output
   572 % and postcondition, and where the postcondition is proven by ATP behind
   573 % the scenes: Here the possible variants in the process of problem
   574 % solving are provided with feedback {\em automatically}, if the problem
   575 % is described in a TP-based programing language: \cite{plmms10} the
   576 % programmer only describes the math algorithm without caring about
   577 % interaction (the respective program is functional and even has no
   578 % input or output statements!); interaction is generated as a
   579 % side-effect by the interpreter --- an efficient separation of concern
   580 % between math programmers and dialog designers promising application
   581 % all over engineering disciplines.
   582 % 
   583 % 
   584 % \subsubsection{Math Authoring in Isabelle/ISAC\label{math-auth}}
   585 % Authoring new mathematics knowledge in {{\sisac}} can be compared with
   586 % ``application programing'' of engineering problems; most of such
   587 % programing uses CAS-based programing languages (CAS = Computer Algebra
   588 % Systems; e.g. Mathematica's or Maple's programing language).
   589 % 
   590 % \paragraph{A novel type of TP-based language} is used by {{\sisac}{}}
   591 % \cite{plmms10} for describing how to construct a solution to an
   592 % engineering problem and for calling equation solvers, integration,
   593 % etc~\footnote{Implementation of CAS-like functionality in TP is not
   594 % primarily concerned with efficiency, but with a didactic question:
   595 % What to decide for: for high-brow algorithms at the state-of-the-art
   596 % or for elementary algorithms comprehensible for students?} within TP;
   597 % TP can ensure ``systems that never make a mistake'' \cite{casproto} -
   598 % are impossible for CAS which have no logics underlying.
   599 % 
   600 % \subparagraph{Authoring is perfect} by writing such TP based programs;
   601 % the application programmer is not concerned with interaction or with
   602 % user guidance: this is concern of a novel kind of program interpreter
   603 % called Lucas-Interpreter. This interpreter hands over control to a
   604 % dialog component at each step of calculation (like a debugger at
   605 % breakpoints) and calls automated TP to check user input following
   606 % personalized strategies according to a feedback module.
   607 % \par
   608 % However ``application programing with TP'' is not done with writing a
   609 % program: according to the principles of TP, each step must be
   610 % justified. Such justifications are given by theorems. So all steps
   611 % must be related to some theorem, if there is no such theorem it must
   612 % be added to the existing knowledge, which is organized in so-called
   613 % \textbf{theories} in Isabelle. A theorem must be proven; fortunately
   614 % Isabelle comprises a mechanism (called ``axiomatization''), which
   615 % allows to omit proofs. Such a theorem is shown in
   616 % Example~\ref{eg:neuper1}.
   617 
   618 The running example, introduced by Fig.\ref{fig-interactive} on
   619 p.\pageref{fig-interactive}, requires to determine the inverse $\cal
   620 Z$-transform for a class of functions. The domain of Signal Processing
   621 is accustomed to specific notation for the resulting functions, which
   622 are absolutely summable and are called TODO: $u[n]$, where $u$ is the
   623 function, $n$ is the argument and the brackets indicate that the
   624 arguments are TODO. Surprisingly, Isabelle accepts the rules for
   625 ${\cal Z}^{-1}$ in this traditional notation~\footnote{Isabelle
   626 experts might be particularly surprised, that the brackets do not
   627 cause errors in typing (as lists).}:
   628 %\vbox{
   629 % \begin{example}
   630   \label{eg:neuper1}
   631   {\small\begin{tabbing}
   632   123\=123\=123\=123\=\kill
   633   \hfill \\
   634   \>axiomatization where \\
   635   \>\>  rule1: ``${\cal Z}^{-1}\;1 = \delta [n]$'' and\\
   636   \>\>  rule2: ``$\vert\vert z \vert\vert > 1 \Rightarrow {\cal Z}^{-1}\;z / (z - 1) = u [n]$'' and\\
   637   \>\>  rule3: ``$\vert\vert$ z $\vert\vert$ < 1 ==> z / (z - 1) = -u [-n - 1]'' and \\
   638 %TODO
   639   \>\>  rule4: ``$\vert\vert$ z $\vert\vert$ > $\vert\vert$ $\alpha$ $\vert\vert$ ==> z / (z - $\alpha$) = $\alpha^n$ $\cdot$ u [n]'' and\\
   640 %TODO
   641   \>\>  rule5: ``$\vert\vert$ z $\vert\vert$ < $\vert\vert$ $\alpha$ $\vert\vert$ ==> z / (z - $\alpha$) = -($\alpha^n$) $\cdot$ u [-n - 1]'' and\\
   642 %TODO
   643   \>\>  rule6: ``$\vert\vert$ z $\vert\vert$ > 1 ==> z/(z - 1)$^2$ = n $\cdot$ u [n]''\\
   644 %TODO
   645   \end{tabbing}
   646   }
   647 % \end{example}
   648 %}
   649 These 6 rules can be used as conditional rewrite rules, depending on
   650 the respective convergence radius. Satisfaction from accordance with traditional notation
   651 contrasts with the above word {\em axiomatization}: As TP-based, the
   652 programming language expects these rules as {\em proved} theorems, and
   653 not as axioms implemented in the above brute force manner; otherwise
   654 all the verification efforts envisaged (like proof of the
   655 post-condition, see below) would be meaningless.
   656 
   657 Isabelle provides a large body of knowledge, rigorously proven from
   658 the basic axioms of mathematics~\footnote{This way of rigorously
   659 deriving all knowledge from first principles is called the
   660 LCF-paradigm in TP.}. In the case of the Z-Transform the most advanced
   661 knowledge can be found in the theoris on Multivariate
   662 Analysis~\footnote{http://isabelle.in.tum.de/dist/library/HOL/HOL-Multivariate\_Analysis}. However,
   663 building up knowledge such that a proof for the above rules would be
   664 reasonably short and easily comprehensible, still requires lots of
   665 work (and is definitely out of scope of our case study).
   666 
   667 \paragraph{At the state-of-the-art in mechanization of knowledge} in
   668 engineering sciences, the process does not stop with the mechanization of
   669 mathematics traditionally used in these sciences. Rather, ``Formal Methods''.
   670 %% \cite{TODO-formal-methods}
   671 are expected to proceed to formal and explicit description of physical items.  Signal Processing,
   672 for instance is concerned with physical devices for signal acquisition
   673 and reconstruction, which involve measuring a physical signal, storing
   674 it, and possibly later rebuilding the original signal or an
   675 approximation thereof. For digital systems, this typically includes
   676 sampling and quantization; devices for signal compression, including
   677 audio compression, image compression, and video compression, etc.
   678 ``Domain engineering''
   679 %% \cite{db-domain-engineering} 
   680 is concerned with
   681 {\em specification} of these devices' components and features; this
   682 part in the process of mechanization is only at the beginning in domains
   683 like Signal Processing.
   684 
   685 \subparagraph{TP-based programming, concern of this paper,} is determined to
   686 add ``algorithmic knowledge'' in Fig.\ref{fig:mathuni} on
   687 p.\pageref{fig:mathuni}.  As we shall see below, TP-based programming
   688 starts with a formal {\em specification} of the problem to be solved.
   689 
   690 
   691 \subsection{Specification of the Problem}\label{spec}
   692 %WN <--> \chapter 7 der Thesis
   693 %WN die Argumentation unten sollte sich NUR auf Verifikation beziehen..
   694 
   695 The problem of the running example is textually described in
   696 Fig.\ref{fig-interactive} on p.\pageref{fig-interactive}. The {\em
   697 formal} specification of this problem, in traditional mathematical
   698 notation, could look like is this:
   699 
   700 %WN Hier brauchen wir die Spezifikation des 'running example' ...
   701 %JR Habe input, output und precond vom Beispiel eingefügt brauche aber Hilfe bei
   702 %JR der post condition - die existiert für uns ja eigentlich nicht aka
   703 %JR haben sie bis jetzt nicht beachtet WN...
   704 %WN2 Mein Vorschlag ist, das TODO zu lassen und deutlich zu kommentieren.
   705 %JR2 done
   706 
   707   \label{eg:neuper2}
   708   {\small\begin{tabbing}
   709   123,\=postcond \=: \= $\forall \,A^\prime\, u^\prime \,v^\prime.\,$\=\kill
   710   \hfill \\
   711   Specification:\\
   712     \>input    \>: filterExpression $X=\frac{3}{(z-\frac{1}{4}+-\frac{1}{8}*\frac{1}{z}}$\\
   713   \>precond  \>: filterExpression continius on $\mathbb{R}$ \\
   714   \>output   \>: stepResponse $x[n]$ \\
   715   \>postcond \>: TODO - (Mind the following remark)\\ \end{tabbing}}
   716 
   717 \begin{remark}
   718    Defining the postcondition requires a high amount mathematical 
   719    knowledge, the difficult part in our case is not to set up this condition 
   720    nor it is more to define it in a way the interpreter is able to handle it. 
   721    Due the fact that implementing that mechanisms is quite the same amount as 
   722    creating the programm itself, it is not avaible in our prototype.
   723    \label{rm:postcond}
   724 \end{remark}
   725 
   726 \paragraph{The implementation} of the formal specification in the present
   727 prototype, still bar-bones without support for authoring:
   728 %WN Kopie von Inverse_Z_Transform.thy, leicht versch"onert:
   729 {\footnotesize
   730 \begin{verbatim}
   731    01  store_specification
   732    02    (prepare_specification
   733    03      ["Jan Rocnik"]
   734    04      "pbl_SP_Ztrans_inv"
   735    05      thy
   736    06      ( ["Inverse", "Z_Transform", "SignalProcessing"],
   737    07        [ ("#Given", ["filterExpression X_eq"]),
   738    08          ("#Pre"  , ["X_eq is_continuous"]),
   739    19          ("#Find" , ["stepResponse n_eq"]),
   740    10          ("#Post" , [" TODO "])],
   741    11        append_rls Erls [Calc ("Atools.is_continuous", eval_is_continuous)], 
   742    12        NONE, 
   743    13        [["SignalProcessing","Z_Transform","Inverse"]]));
   744 \end{verbatim}}
   745 Although the above details are partly very technical, we explain them
   746 in order to document some intricacies of TP-based programming in the
   747 present state of the {\sisac} prototype:
   748 \begin{description}
   749 \item[01..02]\textit{store\_specification:} stores the result of the
   750 function \textit{prep\_specification} in a global reference
   751 \textit{Unsynchronized.ref}, which causes principal conflicts with
   752 Isabelle's asyncronous document model~\cite{Wenzel-11:doc-orient} and
   753 parallel execution~\cite{Makarius-09:parall-proof} and is under
   754 reconstruction already.
   755 
   756 \textit{prep\_pbt:} translates the specification to an internal format
   757 which allows efficient processing; see for instance line {\rm 07}
   758 below.
   759 \item[03..04] are the ``mathematics author'' holding the copy-rights
   760 and a unique identifier for the specification within {\sisac},
   761 complare line {\rm 06}.
   762 \item[05] is the Isabelle \textit{theory} required to parse the
   763 specification in lines {\rm 07..10}.
   764 \item[06] is a key into the tree of all specifications as presented to
   765 the user (where some branches might be hidden by the dialog
   766 component).
   767 \item[07..10] are the specification with input, pre-condition, output
   768 and post-condition respectively; the post-condition is not handled in
   769 the prototype presently. (Follow up Remark~\ref{rm:postcond})
   770 \item[11] creates a term rewriting system (abbreviated \textit{rls} in
   771 {\sisac}) which evaluates the pre-condition for the actual input data.
   772 Only if the evaluation yields \textit{True}, a program con be started.
   773 \item[12]\textit{NONE:} could be \textit{SOME ``solve ...''} for a
   774 problem associated to a function from Computer Algebra (like an
   775 equation solver) which is not the case here.
   776 \item[13] is the specific key into the tree of programs addressing a
   777 method which is able to find a solution which satiesfies the
   778 post-condition of the specification.
   779 \end{description}
   780 
   781 
   782 %WN die folgenden Erkl"arungen finden sich durch "grep -r 'datatype pbt' *"
   783 %WN ...
   784 %  type pbt = 
   785 %     {guh  : guh,         (*unique within this isac-knowledge*)
   786 %      mathauthors: string list, (*copyright*)
   787 %      init  : pblID,      (*to start refinement with*)
   788 %      thy   : theory,     (* which allows to compile that pbt
   789 %			  TODO: search generalized for subthy (ref.p.69*)
   790 %      (*^^^ WN050912 NOT used during application of the problem,
   791 %       because applied terms may be from 'subthy' as well as from super;
   792 %       thus we take 'maxthy'; see match_ags !*)
   793 %      cas   : term option,(*'CAS-command'*)
   794 %      prls  : rls,        (* for preds in where_*)
   795 %      where_: term list,  (* where - predicates*)
   796 %      ppc   : pat list,
   797 %      (*this is the model-pattern; 
   798 %       it contains "#Given","#Where","#Find","#Relate"-patterns
   799 %       for constraints on identifiers see "fun cpy_nam"*)
   800 %      met   : metID list}; (* methods solving the pbt*)
   801 %
   802 %WN weil dieser Code sehr unaufger"aumt ist, habe ich die Erkl"arungen
   803 %WN oben selbst geschrieben.
   804 
   805 
   806 
   807 
   808 %WN das w"urde ich in \sec\label{progr} verschieben und
   809 %WN das SubProblem partial fractions zum Erkl"aren verwenden.
   810 % Such a specification is checked before the execution of a program is
   811 % started, the same applies for sub-programs. In the following example
   812 % (Example~\ref{eg:subprob}) shows the call of such a subproblem:
   813 % 
   814 % \vbox{
   815 %   \begin{example}
   816 %   \label{eg:subprob}
   817 %   \hfill \\
   818 %   {\ttfamily \begin{tabbing}
   819 %   ``(L\_L::bool list) = (\=SubProblem (\=Test','' \\
   820 %   ``\>\>[linear,univariate,equation,test],'' \\
   821 %   ``\>\>[Test,solve\_linear])'' \\
   822 %   ``\>[BOOL equ, REAL z])'' \\
   823 %   \end{tabbing}
   824 %   }
   825 %   {\small\textit{
   826 %     \noindent If a program requires a result which has to be
   827 % calculated first we can use a subproblem to do so. In our specific
   828 % case we wanted to calculate the zeros of a fraction and used a
   829 % subproblem to calculate the zeros of the denominator polynom.
   830 %     }}
   831 %   \end{example}
   832 % }
   833 
   834 \subsection{Implementation of the Method}\label{meth}
   835 %WN <--> \chapter 7 der Thesis
   836 TODO
   837 \subsection{Preparation of Simplifiers for the Program}\label{simp}
   838 
   839 %JR: ich denke wir können diesen punkt weglassen, methoden wie
   840 %JR: drop_questionmarks und ähnliche sind im arical nicht ersichtlich und im 
   841 %JR: grunde nicht relevant (ihre erstellung gleich wie functionen im nächsten
   842 %JR: Punkt)
   843 
   844 \subsection{Preparation of ML-Functions}\label{funs}
   845 
   846 \paragraph{Explicit Problems} require explicit methods to solve them, and within
   847 this methods we have some explicit steps to do. This steps can be unique for
   848 a special problem or refindable in other problems. No mather what case, such
   849 steps often require some technical functions behind. For the solving process
   850 of the Inverse Z Transformation and the corresponding partial fraction it was
   851 neccessary to build helping functions like \texttt{get\_denominator},
   852 \texttt{get\_numerator} or \texttt{argument\_in}. First two functions help us
   853 to filter the denominator or numerator out of a fraction, last one helps us to
   854 get to know the bound variable in a equation.
   855 \par
   856 By taking \texttt{get\_denominator} as an example, we want to explain how to 
   857 implement new functions into the existing system and how we can later use them
   858 in our program.
   859 
   860 \subsubsection{Find a place to Store the Function}
   861 
   862 The whole system builds up on a well defined structure of Knowledge. This
   863 Knowledge sets up at the Path:
   864 \begin{center}\ttfamily src/Tools/isac/Knowledge\normalfont\end{center}
   865 For implementing the Function \texttt{get\_denominator} (which let us extract
   866 the denominator out of a fraction) we have choosen the Theory (file)
   867 \texttt{Rational.thy}.
   868 
   869 \subsubsection{Write down the new Function}
   870 
   871 In upper Theory we now define the new function and its purpose:
   872 \begin{verbatim}
   873   get_denominator :: "real => real"
   874 \end{verbatim}
   875 This command tells the machine that a function with the name
   876 \texttt{get\_denominator} exists which gets a real expression as argument and
   877 returns once again a real expression. Now we are able to implement the function
   878 itself, Example~\ref{eg:getdenom} now shows the implementation of
   879 \texttt{get\_denominator}.
   880 
   881 \begin{example}
   882   \label{eg:getdenom}
   883   \begin{verbatim}
   884 
   885 01  (*
   886 02   *("get_denominator",
   887 03   *  ("Rational.get_denominator", eval_get_denominator ""))
   888 04   *)
   889 05  fun eval_get_denominator (thmid:string) _ 
   890 06            (t as Const ("Rational.get_denominator", _) $
   891 07                (Const ("Rings.inverse_class.divide", _) $num 
   892 08                  $denom)) thy = 
   893 09          SOME (mk_thmid thmid "" 
   894 10              (Print_Mode.setmp [] 
   895 11                (Syntax.string_of_term (thy2ctxt thy)) denom) "", 
   896 12              Trueprop $ (mk_equality (t, denom)))
   897 13    | eval_get_denominator _ _ _ _ = NONE;\end{verbatim}
   898 \end{example}
   899 
   900 Line \texttt{07} and \texttt{08} are describing the mode of operation the best -
   901 there is a fraction\\ (\ttfamily Rings.inverse\_class.divide\normalfont) 
   902 splittet
   903 into its two parts (\texttt{\$num \$denom}). The lines before are additionals
   904 commands for declaring the function and the lines after are modeling and 
   905 returning a real variable out of \texttt{\$denom}.
   906 
   907 \subsubsection{Add a test for the new Function}
   908 
   909 \paragraph{Everytime when adding} a new function it is essential also to add
   910 a test for it. Tests for all functions are sorted in the same structure as the
   911 knowledge it self and can be found up from the path:
   912 \begin{center}\ttfamily test/Tools/isac/Knowledge\normalfont\end{center}
   913 This tests are nothing very special, as a first prototype the functionallity
   914 of a function can be checked by evaluating the result of a simple expression
   915 passed to the function. Example~\ref{eg:getdenomtest} shows the test for our
   916 \textit{just} created function \texttt{get\_denominator}.
   917 
   918 \begin{example}
   919 \label{eg:getdenomtest}
   920 \begin{verbatim}
   921 
   922 01 val thy = @{theory Isac};
   923 02 val t = term_of (the (parse thy "get_denominator ((a +x)/b)"));
   924 03 val SOME (_, t') = eval_get_denominator "" 0 t thy;
   925 04 if term2str t' = "get_denominator ((a + x) / b) = b" then ()
   926 05 else error "get_denominator ((a + x) / b) = b" \end{verbatim}
   927 \end{example}
   928 
   929 \begin{description}
   930 \item[01] checks if the proofer set up on our {\sisac{}} System.
   931 \item[02] passes a simple expression (fraction) to our suddenly created
   932           function.
   933 \item[04] checks if the resulting variable is the correct one (in this case
   934           ``b'' the denominator) and returns.
   935 \item[05] handels the error case and reports that the function is not able to
   936           solve the given problem.
   937 \end{description}
   938 
   939 \subsection{Implementation of the TP-based Program}\label{progr}
   940 
   941 \paragraph{After introducing} neccesarry informations about the {\sisac{}}
   942 System, the main part of a implementation in the TP-bases language can be shown.
   943 \par
   944 Solution~\ref{s:impl} shows us the implementation of the
   945 Inverse-Z-Transformation, a description on the code is given afterwards.
   946 
   947 \begin{solution}
   948 \label{s:impl}
   949 \begin{tabbing}
   950 \small\it
   951 123l\=123\=123\=123\=123\=123\=123\=123\=123\=(x \=123\=123\=\kill
   952 \> \\
   953 \> \\
   954 \>{\rm 01}\>  {\tt Program} InverseZTransform (X\_eq::bool) =   \\
   955 \>{\rm 02}\>\>  {\tt LET}                                       \\
   956 \>{\rm 03}\>\>\>  X\_eq = {\tt Take} X\_eq ;   \\
   957 \>{\rm 04}\>\>\>  X\_eq = {\tt Rewrite} ruleZY X\_eq ; \\
   958 \>{\rm 05}\>\>\>  (X\_z::real) = lhs X\_eq ;       \\ %no inside-out evaluation
   959 \>{\rm 06}\>\>\>  (z::real) = argument\_in X\_z; \\
   960 \>{\rm 07}\>\>\>  (part\_frac::real) = {\tt SubProblem} \\
   961 \>{\rm 08}\>\>\>\>\>\>\>\>  ( \> Isac, \\
   962 \>{\rm 08}\>\>\>\>\>\>\>\>\>  [partial\_fraction, rational, simplification]\\
   963 \>{\rm 09}\>\>\>\>\>\>\>\>\>  [simplification,of\_rationals,to\_partial\_fraction] ) \\
   964 \>{\rm 10}\>\>\>\>\>\>\>\>  [ (rhs X\_eq)::real, z::real ]; \\
   965 \>{\rm 12}\>\>\>  (X'\_eq::bool) = {\tt Take} ((X'::real =$>$ bool) z = ZZ\_1 part\_frac) ; \\
   966 
   967 \>{\rm 12}\>\>\>  X'\_eq = {\tt Rewrite\_Set} ruleYZ X'\_eq ;   \\
   968 \>{\rm 15}\>\>\>  X'\_eq = {\tt Rewrite\_Set} inverse\_z X'\_eq \\
   969 \>{\rm 16}\>\>  {\tt IN } \\
   970 \>{\rm 15}\>\>\>  X'\_eq
   971 \end{tabbing}
   972 \end{solution}
   973 
   974 % ORIGINAL FROM Inverse_Z_Transform.thy
   975 % "Script InverseZTransform (X_eq::bool) =            "^(*([], Frm), Problem (Isac, [Inverse, Z_Transform, SignalProcessing])*)
   976 % "(let X = Take X_eq;                                "^(*([1], Frm), X z = 3 / (z - 1 / 4 + -1 / 8 * (1 / z))*)
   977 % "  X' = Rewrite ruleZY False X;                     "^(*([1], Res), ?X' z = 3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z)))*)
   978 % "  (X'_z::real) = lhs X';                           "^(*            ?X' z*)
   979 % "  (zzz::real) = argument_in X'_z;                  "^(*            z *)
   980 % "  (funterm::real) = rhs X';                        "^(*            3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z)))*)
   981 %
   982 % "  (pbz::real) = (SubProblem (Isac',                "^(**)
   983 % "    [partial_fraction,rational,simplification],    "^
   984 % "    [simplification,of_rationals,to_partial_fraction]) "^
   985 % "    [REAL funterm, REAL zzz]);                     "^(*([2], Res), 4 / (z - 1 / 2) + -4 / (z - -1 / 4)*)
   986 %
   987 % "  (pbz_eq::bool) = Take (X'_z = pbz);              "^(*([3], Frm), ?X' z = 4 / (z - 1 / 2) + -4 / (z - -1 / 4)*)
   988 % "  pbz_eq = Rewrite ruleYZ False pbz_eq;            "^(*([3], Res), ?X' z = 4 * (?z / (z - 1 / 2)) + -4 * (?z / (z - -1 / 4))*)
   989 % "  pbz_eq = drop_questionmarks pbz_eq;              "^(*               4 * (z / (z - 1 / 2)) + -4 * (z / (z - -1 / 4))*)
   990 % "  (X_zeq::bool) = Take (X_z = rhs pbz_eq);         "^(*([4], Frm), X_z = 4 * (z / (z - 1 / 2)) + -4 * (z / (z - -1 / 4))*)
   991 % "  n_eq = (Rewrite_Set inverse_z False) X_zeq;      "^(*([4], Res), X_z = 4 * (1 / 2) ^^^ ?n * ?u [?n] + -4 * (-1 / 4) ^^^ ?n * ?u [?n]*)
   992 % "  n_eq = drop_questionmarks n_eq                   "^(*            X_z = 4 * (1 / 2) ^^^ n * u [n] + -4 * (-1 / 4) ^^^ n * u [n]*)
   993 % "in n_eq)"                                            (*([], Res), X_z = 4 * (1 / 2) ^^^ n * u [n] + -4 * (-1 / 4) ^^^ n * u [n]*)
   994 
   995 \section{Workflow of Programming in the Prototype}\label{workflow}
   996 
   997 \subsection{Preparations and Trials}\label{flow-prep}
   998 TODO Build\_Inverse\_Z\_Transform.thy ... ``imports PolyEq DiffApp Partial\_Fractions''
   999 .\\.\\.\\
  1000 
  1001 %JR: Hier sollte eigentlich stehen was nun bei 4.3.1 ist. Habe das erst kürzlich
  1002 %JR: eingefügt; das war der beinn unserer Arbeit in
  1003 %JR: Build_Inverse_Z_Transformation und beschreibt die meiner Meinung nach bei
  1004 %JR: jedem neuen Programm nötigen Schritte.
  1005 
  1006 \subsection{Implementation in Isabelle/{\isac}}\label{flow-impl}
  1007 
  1008 \paragraph{At the beginning} of the implementation it is good to decide on one
  1009 way the problem should be solved. We also did this for our Z-Transformation
  1010 Problem and have choosen the way it is also thaugt in the Signal Processing
  1011 Problem classes.
  1012 \subparagraph{By writing down} each of this neccesarry steps we are describing
  1013 one line of our upcoming program. In the following example we show the 
  1014 Calculation on the left and on the right the tactics in the program which
  1015 created the respective formula on the left.
  1016 
  1017 \begin{example}
  1018 \hfill\\
  1019 {\small\it
  1020 \begin{tabbing}
  1021 123l\=123\=123\=123\=123\=123\=123\=123\=123\=123\=123\=123\=\kill
  1022 \>{\rm 01}\> $\bullet$  \> {\tt Problem } (Inverse\_Z\_Transform, [Inverse, Z\_Transform, SignalProcessing])       \`\\
  1023 \>{\rm 02}\>\> $\vdash\;\;X z = \frac{3}{z - \frac{1}{4} - \frac{1}{8} \cdot z^{-1}}$       \`{\footnotesize {\tt Take} X\_eq}\\
  1024 \>{\rm 03}\>\> $X z = \frac{3}{z + \frac{-1}{4} + \frac{-1}{8} \cdot \frac{1}{z}}$          \`{\footnotesize {\tt Rewrite} ruleZY X\_eq}\\
  1025 \>{\rm 04}\>\> $\bullet$\> {\tt Problem } [partial\_fraction,rational,simplification]        \`{\footnotesize {\tt SubProblem} \dots}\\
  1026 \>{\rm 05}\>\>\>  $\vdash\;\;\frac{3}{z + \frac{-1}{4} + \frac{-1}{8} \cdot \frac{1}{z}}=$    \`- - -\\
  1027 \>{\rm 06}\>\>\>  $\frac{24}{-1 + -2 \cdot z + 8 \cdot z^2}$                                   \`- - -\\
  1028 \>{\rm 07}\>\>\>  $\bullet$\> solve ($-1 + -2 \cdot z + 8 \cdot z^2,\;z$ )                      \`- - -\\
  1029 \>{\rm 08}\>\>\>\>   $\vdash$ \> $\frac{3}{z + \frac{-1}{4} + \frac{-1}{8} \cdot \frac{1}{z}}=0$ \`- - -\\
  1030 \>{\rm 09}\>\>\>\>   $z = \frac{2+\sqrt{-4+8}}{16}\;\lor\;z = \frac{2-\sqrt{-4+8}}{16}$           \`- - -\\
  1031 \>{\rm 10}\>\>\>\>   $z = \frac{1}{2}\;\lor\;z =$ \_\_\_                                           \`- - -\\
  1032 \>        \>\>\>\>   \_\_\_                                                                        \`- - -\\
  1033 \>{\rm 11}\>\> \dots\> $\frac{4}{z - \frac{1}{2}} + \frac{-4}{z - \frac{-1}{4}}$                   \`\\
  1034 \>{\rm 12}\>\> $X^\prime z = {\cal Z}^{-1} (\frac{4}{z - \frac{1}{2}} + \frac{-4}{z - \frac{-1}{4}})$ \`{\footnotesize {\tt Take} ((X'::real =$>$ bool) z = ZZ\_1 part\_frac)}\\
  1035 \>{\rm 13}\>\> $X^\prime z = {\cal Z}^{-1} (4\cdot\frac{z}{z - \frac{1}{2}} + -4\cdot\frac{z}{z - \frac{-1}{4}})$ \`{\footnotesize{\tt Rewrite\_Set} ruleYZ X'\_eq }\\
  1036 \>{\rm 14}\>\> $X^\prime z = 4\cdot(\frac{1}{2})^n \cdot u [n] + -4\cdot(\frac{-1}{4})^n \cdot u [n]$  \`{\footnotesize {\tt Rewrite\_Set} inverse\_z X'\_eq}\\
  1037 \>{\rm 15}\> \dots\> $X^\prime z = 4\cdot(\frac{1}{2})^n \cdot u [n] + -4\cdot(\frac{-1}{4})^n \cdot u [n]$ \`{\footnotesize {\tt Check\_Postcond}}
  1038 \end{tabbing}}
  1039 
  1040 \end{example}
  1041 
  1042 % ORIGINAL FROM Inverse_Z_Transform.thy
  1043 %    "Script InverseZTransform (X_eq::bool) =            "^(*([], Frm), Problem (Isac, [Inverse, Z_Transform, SignalProcessing])*)
  1044 %    "(let X = Take X_eq;                                "^(*([1], Frm), X z = 3 / (z - 1 / 4 + -1 / 8 * (1 / z))*)
  1045 %    "  X' = Rewrite ruleZY False X;                     "^(*([1], Res), ?X' z = 3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z)))*)
  1046 %    "  (X'_z::real) = lhs X';                           "^(*            ?X' z*)
  1047 %    "  (zzz::real) = argument_in X'_z;                  "^(*            z *)
  1048 %    "  (funterm::real) = rhs X';                        "^(*            3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z)))*)
  1049 % 
  1050 %    "  (pbz::real) = (SubProblem (Isac',                "^(**)
  1051 %    "    [partial_fraction,rational,simplification],    "^
  1052 %    "    [simplification,of_rationals,to_partial_fraction]) "^
  1053 %    "    [REAL funterm, REAL zzz]);                     "^(*([2], Res), 4 / (z - 1 / 2) + -4 / (z - -1 / 4)*)
  1054 % 
  1055 %    "  (pbz_eq::bool) = Take (X'_z = pbz);              "^(*([3], Frm), ?X' z = 4 / (z - 1 / 2) + -4 / (z - -1 / 4)*)
  1056 %    "  pbz_eq = Rewrite ruleYZ False pbz_eq;            "^(*([3], Res), ?X' z = 4 * (?z / (z - 1 / 2)) + -4 * (?z / (z - -1 / 4))*)
  1057 %    "  pbz_eq = drop_questionmarks pbz_eq;              "^(*               4 * (z / (z - 1 / 2)) + -4 * (z / (z - -1 / 4))*)
  1058 %    "  (X_zeq::bool) = Take (X_z = rhs pbz_eq);         "^(*([4], Frm), X_z = 4 * (z / (z - 1 / 2)) + -4 * (z / (z - -1 / 4))*)
  1059 %    "  n_eq = (Rewrite_Set inverse_z False) X_zeq;      "^(*([4], Res), X_z = 4 * (1 / 2) ^^^ ?n * ?u [?n] + -4 * (-1 / 4) ^^^ ?n * ?u [?n]*)
  1060 %    "  n_eq = drop_questionmarks n_eq                   "^(*            X_z = 4 * (1 / 2) ^^^ n * u [n] + -4 * (-1 / 4) ^^^ n * u [n]*)
  1061 %    "in n_eq)"                                            (*([], Res), X_z = 4 * (1 / 2) ^^^ n * u [n] + -4 * (-1 / 4) ^^^ n * u [n]*)
  1062 
  1063 .\\.\\.\\
  1064 
  1065 \subsection{Transfer into the Isabelle/{\isac} Knowledge}\label{flow-trans}
  1066 TODO http://www.ist.tugraz.at/isac/index.php/Extend\_ISAC\_Knowledge\#Add\_an\_example ?
  1067 
  1068 
  1069 
  1070 
  1071 \newpage
  1072 -------------------------------------------------------------------
  1073 
  1074 Material, falls noch Platz bleibt ...
  1075 
  1076 -------------------------------------------------------------------
  1077 
  1078 
  1079 \subsubsection{Trials on Notation and Termination}
  1080 
  1081 \paragraph{Technical notations} are a big problem for our piece of software,
  1082 but the reason for that isn't a fault of the software itself, one of the
  1083 troubles comes out of the fact that different technical subtopics use different
  1084 symbols and notations for a different purpose. The most famous example for such
  1085 a symbol is the complex number $i$ (in cassique math) or $j$ (in technical
  1086 math). In the specific part of signal processing one of this notation issues is
  1087 the use of brackets --- we use round brackets for analoge signals and squared
  1088 brackets for digital samples. Also if there is no problem for us to handle this
  1089 fact, we have to tell the machine what notation leads to wich meaning and that
  1090 this purpose seperation is only valid for this special topic - signal
  1091 processing.
  1092 \subparagraph{In the programming language} itself it is not possible to declare
  1093 fractions, exponents, absolutes and other operators or remarks in a way to make
  1094 them pretty to read; our only posssiblilty were ASCII characters and a handfull
  1095 greek symbols like: $\alpha, \beta, \gamma, \phi,\ldots$.
  1096 \par
  1097 With the upper collected knowledge it is possible to check if we were able to
  1098 donate all required terms and expressions.
  1099 
  1100 \subsubsection{Definition and Usage of Rules}
  1101 
  1102 \paragraph{The core} of our implemented problem is the Z-Transformation, due
  1103 the fact that the transformation itself would require higher math which isn't
  1104 yet avaible in our system we decided to choose the way like it is applied in
  1105 labratory and problem classes at our university - by applying transformation
  1106 rules (collected in transformation tables).
  1107 \paragraph{Rules,} in {\sisac{}}'s programming language can be designed by the
  1108 use of axiomatizations like shown in Example~\ref{eg:ruledef}
  1109 
  1110 \begin{example}
  1111   \label{eg:ruledef}
  1112   \hfill\\
  1113   \begin{verbatim}
  1114   axiomatization where
  1115     rule1: ``1 = $\delta$[n]'' and
  1116     rule2: ``|| z || > 1 ==> z / (z - 1) = u [n]'' and
  1117     rule3: ``|| z || < 1 ==> z / (z - 1) = -u [-n - 1]''
  1118   \end{verbatim}
  1119 \end{example}
  1120 
  1121 This rules can be collected in a ruleset and applied to a given expression as
  1122 follows in Example~\ref{eg:ruleapp}.
  1123 
  1124 \begin{example}
  1125   \hfill\\
  1126   \label{eg:ruleapp}
  1127   \begin{enumerate}
  1128   \item Store rules in ruleset:
  1129   \begin{verbatim}
  1130   val inverse_Z = append_rls "inverse_Z" e_rls
  1131     [ Thm ("rule1",num_str @{thm rule1}),
  1132       Thm ("rule2",num_str @{thm rule2}),
  1133       Thm ("rule3",num_str @{thm rule3})
  1134     ];\end{verbatim}
  1135   \item Define exression:
  1136   \begin{verbatim}
  1137   val sample_term = str2term "z/(z-1)+z/(z-</delta>)+1";\end{verbatim}
  1138   \item Apply ruleset:
  1139   \begin{verbatim}
  1140   val SOME (sample_term', asm) = 
  1141     rewrite_set_ thy true inverse_Z sample_term;\end{verbatim}
  1142   \end{enumerate}
  1143 \end{example}
  1144 
  1145 The use of rulesets makes it much easier to develop our designated applications,
  1146 but the programmer has to be careful and patient. When applying rulesets
  1147 two important issues have to be mentionend:
  1148 \subparagraph{How often} the rules have to be applied? In case of
  1149 transformations it is quite clear that we use them once but other fields
  1150 reuqire to apply rules until a special condition is reached (e.g.
  1151 a simplification is finished when there is nothing to be done left).
  1152 \subparagraph{The order} in which rules are applied often takes a big effect
  1153 and has to be evaluated for each purpose once again.
  1154 \par
  1155 In our special case of Signal Processing and the rules defined in
  1156 Example~\ref{eg:ruledef} we have to apply rule~1 first of all to transform all
  1157 constants. After this step has been done it no mather which rule fit's next.
  1158 
  1159 \subsubsection{Helping Functions}
  1160 
  1161 \paragraph{New Programms require,} often new ways to get through. This new ways
  1162 means that we handle functions that have not been in use yet, they can be 
  1163 something special and unique for a programm or something famous but unneeded in
  1164 the system yet. In our dedicated example it was for example neccessary to split
  1165 a fraction into numerator and denominator; the creation of such function and
  1166 even others is described in upper Sections~\ref{simp} and \ref{funs}.
  1167 
  1168 \subsubsection{Trials on equation solving}
  1169 %simple eq and problem with double fractions/negative exponents
  1170 \paragraph{The Inverse Z-Transformation} makes it neccessary to solve
  1171 equations degree one and two. Solving equations in the first degree is no 
  1172 problem, wether for a student nor for our machine; but even second degree
  1173 equations can lead to big troubles. The origin of this troubles leads from
  1174 the build up process of our equation solving functions; they have been
  1175 implemented some time ago and of course they are not as good as we want them to
  1176 be. Wether or not following we only want to show how cruel it is to build up new
  1177 work on not well fundamentials.
  1178 \subparagraph{A simple equation solving,} can be set up as shown in the next
  1179 example:
  1180 
  1181 \begin{example}
  1182 \begin{verbatim}
  1183   
  1184   val fmz =
  1185     ["equality (-1 + -2 * z + 8 * z ^^^ 2 = (0::real))",
  1186      "solveFor z",
  1187      "solutions L"];                                    
  1188 
  1189   val (dI',pI',mI') =
  1190     ("Isac", 
  1191       ["abcFormula","degree_2","polynomial","univariate","equation"],
  1192       ["no_met"]);\end{verbatim}
  1193 \end{example}
  1194 
  1195 Here we want to solve the equation: $-1+-2\cdot z+8\cdot z^{2}=0$. (To give
  1196 a short overview on the commands; at first we set up the equation and tell the
  1197 machine what's the bound variable and where to store the solution. Second step 
  1198 is to define the equation type and determine if we want to use a special method
  1199 to solve this type.) Simple checks tell us that the we will get two results for
  1200 this equation and this results will be real.
  1201 So far it is easy for us and for our machine to solve, but
  1202 mentioned that a unvariate equation second order can have three different types
  1203 of solutions it is getting worth.
  1204 \subparagraph{The solving of} all this types of solutions is not yet supported.
  1205 Luckily it was needed for us; but something which has been needed in this 
  1206 context, would have been the solving of an euation looking like:
  1207 $-z^{-2}+-2\cdot z^{-1}+8=0$ which is basically the same equation as mentioned
  1208 before (remember that befor it was no problem to handle for the machine) but
  1209 now, after a simple equivalent transformation, we are not able to solve
  1210 it anymore.
  1211 \subparagraph{Error messages} we get when we try to solve something like upside
  1212 were very confusing and also leads us to no special hint about a problem.
  1213 \par The fault behind is, that we have no well error handling on one side and
  1214 no sufficient formed equation solving on the other side. This two facts are
  1215 making the implemention of new material very difficult.
  1216 
  1217 \subsection{Formalization of missing knowledge in Isabelle}
  1218 
  1219 \paragraph{A problem} behind is the mechanization of mathematic
  1220 theories in TP-bases languages. There is still a huge gap between
  1221 these algorithms and this what we want as a solution - in Example
  1222 Signal Processing. 
  1223 
  1224 \vbox{
  1225   \begin{example}
  1226     \label{eg:gap}
  1227     \[
  1228       X\cdot(a+b)+Y\cdot(c+d)=aX+bX+cY+dY
  1229     \]
  1230     {\small\textit{
  1231       \noindent A very simple example on this what we call gap is the
  1232 simplification above. It is needles to say that it is correct and also
  1233 Isabelle for fills it correct - \emph{always}. But sometimes we don't
  1234 want expand such terms, sometimes we want another structure of
  1235 them. Think of a problem were we now would need only the coefficients
  1236 of $X$ and $Y$. This is what we call the gap between mechanical
  1237 simplification and the solution.
  1238     }}
  1239   \end{example}
  1240 }
  1241 
  1242 \paragraph{We are not able to fill this gap,} until we have to live
  1243 with it but first have a look on the meaning of this statement:
  1244 Mechanized math starts from mathematical models and \emph{hopefully}
  1245 proceeds to match physics. Academic engineering starts from physics
  1246 (experimentation, measurement) and then proceeds to mathematical
  1247 modeling and formalization. The process from a physical observance to
  1248 a mathematical theory is unavoidable bound of setting up a big
  1249 collection of standards, rules, definition but also exceptions. These
  1250 are the things making mechanization that difficult.
  1251 
  1252 \vbox{
  1253   \begin{example}
  1254     \label{eg:units}
  1255     \[
  1256       m,\ kg,\ s,\ldots
  1257     \]
  1258     {\small\textit{
  1259       \noindent Think about some units like that one's above. Behind
  1260 each unit there is a discerning and very accurate definition: One
  1261 Meter is the distance the light travels, in a vacuum, through the time
  1262 of 1 / 299.792.458 second; one kilogram is the weight of a
  1263 platinum-iridium cylinder in paris; and so on. But are these
  1264 definitions usable in a computer mechanized world?!
  1265     }}
  1266   \end{example}
  1267 }
  1268 
  1269 \paragraph{A computer} or a TP-System builds on programs with
  1270 predefined logical rules and does not know any mathematical trick
  1271 (follow up example \ref{eg:trick}) or recipe to walk around difficult
  1272 expressions. 
  1273 
  1274 \vbox{
  1275   \begin{example}
  1276     \label{eg:trick}
  1277   \[ \frac{1}{j\omega}\cdot\left(e^{-j\omega}-e^{j3\omega}\right)= \]
  1278   \[ \frac{1}{j\omega}\cdot e^{-j2\omega}\cdot\left(e^{j\omega}-e^{-j\omega}\right)=
  1279      \frac{1}{\omega}\, e^{-j2\omega}\cdot\colorbox{lgray}{$\frac{1}{j}\,\left(e^{j\omega}-e^{-j\omega}\right)$}= \]
  1280   \[ \frac{1}{\omega}\, e^{-j2\omega}\cdot\colorbox{lgray}{$2\, sin(\omega)$} \]
  1281     {\small\textit{
  1282       \noindent Sometimes it is also useful to be able to apply some
  1283 \emph{tricks} to get a beautiful and particularly meaningful result,
  1284 which we are able to interpret. But as seen in this example it can be
  1285 hard to find out what operations have to be done to transform a result
  1286 into a meaningful one.
  1287     }}
  1288   \end{example}
  1289 }
  1290 
  1291 \paragraph{The only possibility,} for such a system, is to work
  1292 through its known definitions and stops if none of these
  1293 fits. Specified on Signal Processing or any other application it is
  1294 often possible to walk through by doing simple creases. This creases
  1295 are in general based on simple math operational but the challenge is
  1296 to teach the machine \emph{all}\footnote{Its pride to call it
  1297 \emph{all}.} of them. Unfortunately the goal of TP Isabelle is to
  1298 reach a high level of \emph{all} but it in real it will still be a
  1299 survey of knowledge which links to other knowledge and {{\sisac}{}} a
  1300 trainer and helper but no human compensating calculator. 
  1301 \par
  1302 {{{\sisac}{}}} itself aims to adds \emph{Algorithmic Knowledge} (formal
  1303 specifications of problems out of topics from Signal Processing, etc.)
  1304 and \emph{Application-oriented Knowledge} to the \emph{deductive} axis of
  1305 physical knowledge. The result is a three-dimensional universe of
  1306 mathematics seen in Figure~\ref{fig:mathuni}.
  1307 
  1308 \begin{figure}
  1309   \begin{center}
  1310     \includegraphics{fig/universe}
  1311     \caption{Didactic ``Math-Universe'': Algorithmic Knowledge (Programs) is
  1312              combined with Application-oriented Knowledge (Specifications) and Deductive Knowledge (Axioms, Definitions, Theorems). The Result
  1313              leads to a three dimensional math universe.\label{fig:mathuni}}
  1314   \end{center}
  1315 \end{figure}
  1316 
  1317 %WN Deine aktuelle Benennung oben wird Dir kein Fachmann abnehmen;
  1318 %WN bitte folgende Bezeichnungen nehmen:
  1319 %WN 
  1320 %WN axis 1: Algorithmic Knowledge (Programs)
  1321 %WN axis 2: Application-oriented Knowledge (Specifications)
  1322 %WN axis 3: Deductive Knowledge (Axioms, Definitions, Theorems)
  1323 %WN 
  1324 %WN und bitte die R"ander von der Grafik wegschneiden (was ich f"ur *.pdf
  1325 %WN nicht hinkriege --- weshalb ich auch die eJMT-Forderung nicht ganz
  1326 %WN verstehe, separierte PDFs zu schicken; ich w"urde *.png schicken)
  1327 
  1328 %JR Ränder und beschriftung geändert. Keine Ahnung warum eJMT sich pdf's
  1329 %JR wünschen, würde ebenfalls png oder ähnliches verwenden, aber wenn pdf's
  1330 %JR gefordert werden WN2...
  1331 %WN2 meiner Meinung nach hat sich eJMT unklar ausgedr"uckt (z.B. kann
  1332 %WN2 man meines Wissens pdf-figures nicht auf eine bestimmte Gr"osse
  1333 %WN2 zusammenschneiden um die R"ander weg zu bekommen)
  1334 %WN2 Mein Vorschlag ist, in umserem tex-file bei *.png zu bleiben und
  1335 %WN2 png + pdf figures mitzuschicken.
  1336 
  1337 \subsection{Notes on Problems with Traditional Notation}
  1338 
  1339 \paragraph{During research} on these topic severely problems on
  1340 traditional notations have been discovered. Some of them have been
  1341 known in computer science for many years now and are still unsolved,
  1342 one of them aggregates with the so called \emph{Lambda Calculus},
  1343 Example~\ref{eg:lamda} provides a look on the problem that embarrassed
  1344 us.
  1345 
  1346 \vbox{
  1347   \begin{example}
  1348     \label{eg:lamda}
  1349 
  1350   \[ f(x)=\ldots\;  \quad R \rightarrow \quad R \]
  1351 
  1352 
  1353   \[ f(p)=\ldots\;  p \in \quad R \]
  1354 
  1355     {\small\textit{
  1356       \noindent Above we see two equations. The first equation aims to
  1357 be a mapping of an function from the reel range to the reel one, but
  1358 when we change only one letter we get the second equation which
  1359 usually aims to insert a reel point $p$ into the reel function. In
  1360 computer science now we have the problem to tell the machine (TP) the
  1361 difference between this two notations. This Problem is called
  1362 \emph{Lambda Calculus}.
  1363     }}
  1364   \end{example}
  1365 }
  1366 
  1367 \paragraph{An other problem} is that terms are not full simplified in
  1368 traditional notations, in {{\sisac}} we have to simplify them complete
  1369 to check weather results are compatible or not. in e.g. the solutions
  1370 of an second order linear equation is an rational in {{\sisac}} but in
  1371 tradition we keep fractions as long as possible and as long as they
  1372 aim to be \textit{beautiful} (1/8, 5/16,...).
  1373 \subparagraph{The math} which should be mechanized in Computer Theorem
  1374 Provers (\emph{TP}) has (almost) a problem with traditional notations
  1375 (predicate calculus) for axioms, definitions, lemmas, theorems as a
  1376 computer program or script is not able to interpret every Greek or
  1377 Latin letter and every Greek, Latin or whatever calculations
  1378 symbol. Also if we would be able to handle these symbols we still have
  1379 a problem to interpret them at all. (Follow up \hbox{Example
  1380 \ref{eg:symbint1}})
  1381 
  1382 \vbox{
  1383   \begin{example}
  1384     \label{eg:symbint1}
  1385     \[
  1386       u\left[n\right] \ \ldots \ unitstep
  1387     \]
  1388     {\small\textit{
  1389       \noindent The unitstep is something we need to solve Signal
  1390 Processing problem classes. But in {{{\sisac}{}}} the rectangular
  1391 brackets have a different meaning. So we abuse them for our
  1392 requirements. We get something which is not defined, but usable. The
  1393 Result is syntax only without semantic.
  1394     }}
  1395   \end{example}
  1396 }
  1397 
  1398 In different problems, symbols and letters have different meanings and
  1399 ask for different ways to get through. (Follow up \hbox{Example
  1400 \ref{eg:symbint2}}) 
  1401 
  1402 \vbox{
  1403   \begin{example}
  1404     \label{eg:symbint2}
  1405     \[
  1406       \widehat{\ }\ \widehat{\ }\ \widehat{\ } \  \ldots \  exponent
  1407     \]
  1408     {\small\textit{
  1409     \noindent For using exponents the three \texttt{widehat} symbols
  1410 are required. The reason for that is due the development of
  1411 {{{\sisac}{}}} the single \texttt{widehat} and also the double were
  1412 already in use for different operations.
  1413     }}
  1414   \end{example}
  1415 }
  1416 
  1417 \paragraph{Also the output} can be a problem. We are familiar with a
  1418 specified notations and style taught in university but a computer
  1419 program has no knowledge of the form proved by a professor and the
  1420 machines themselves also have not yet the possibilities to print every
  1421 symbol (correct) Recent developments provide proofs in a human
  1422 readable format but according to the fact that there is no money for
  1423 good working formal editors yet, the style is one thing we have to
  1424 live with.
  1425 
  1426 \section{Problems rising out of the Development Environment}
  1427 
  1428 fehlermeldungen! TODO
  1429 
  1430 \section{Conclusion}\label{conclusion}
  1431 
  1432 TODO
  1433 
  1434 \bibliographystyle{alpha}
  1435 \bibliography{references}
  1436 
  1437 \end{document}