1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 % Electronic Journal of Mathematics and Technology (eJMT) %
3 % style sheet for LaTeX. Please do not modify sections %
4 % or commands marked 'eJMT'. %
6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10 \documentclass[12pt,a4paper]{article}% %
12 \usepackage{amsfonts,amsmath,amssymb} %
13 \usepackage[a4paper]{geometry} %
14 \usepackage{fancyhdr} %
16 \usepackage[pdftex]{hyperref} % see note below %
17 \usepackage{graphicx}% %
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}} %
47 % eJMT page dimensions %
49 \geometry{left=2cm,right=2cm,top=3.2cm,bottom=4cm} %
51 % eJMT header & footer %
53 \newcounter{ejmtFirstpage} %
54 \setcounter{ejmtFirstpage}{1} %
56 \setlength{\headheight}{14pt} %
57 \geometry{left=2cm,right=2cm,top=3.2cm,bottom=4cm} %
58 \pagestyle{fancyplain} %
60 \fancyhead[c]{\small The Electronic Journal of Mathematics%
61 \ and Technology, Volume 1, Number 1, ISSN 1933-2823} %
63 \ifnum\value{ejmtFirstpage}=0% %
64 {\vtop to\hsize{\hrule\vskip .2cm\thepage}}% %
65 \else\setcounter{ejmtFirstpage}{0}\fi% %
68 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
70 % Please place your own definitions here
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}$}
76 \definecolor{lgray}{RGB}{238,238,238}
79 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
81 % How to use hyperref %
82 % ------------------- %
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 %
89 % \href{http://something.somewhere.com/mystuff}{My Text Link}
91 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
97 \title{Trials with TP-based Programming
99 for Interactive Course Material}%
101 % Single author. Please supply at least your name,
102 % email address, and affiliation here.
104 \author{\begin{tabular}{c}
105 \textit{Jan Ro\v{c}nik} \\
106 jan.rocnik@student.tugraz.at \\
108 Graz University of Technologie\\
112 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
114 % eJMT commands - do not change these %
119 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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 ...
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}.
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
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.
157 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
161 \thispagestyle{fancy} %
163 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
165 % Please use the following to indicate sections, subsections,
166 % etc. Please also use \subsubsection{...}, \paragraph{...}
167 % and \subparagraph{...} as necessary.
170 \section{Introduction}\label{intro}
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.
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.
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.
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
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
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
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.
243 The paper will use the problem in Fig.\ref{fig-interactive} as a
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}
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
260 User-interaction on the Worksheet is {\em checked} and {\em guided} by
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
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.
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
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.
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.
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
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}.
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.
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 \; )$
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.}
347 % Terms may also contain $\lambda$-abstractions. For example, $\lambda
348 % x. \; x$ is the identity function.
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
355 %WN2 Wenn der Punkt nicht weiter gebraucht wird, nimmt er nur wertvollen
356 %WN2 Platz f"ur Anderes weg.
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,
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''.
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
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:
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])$.
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.
397 % \item[Rewrite\_Inst:] ${\it substitution}\Rightarrow{\it
398 % theorem}\Rightarrow{\it term}\Rightarrow{\it term} * {\it term}\;{\it
401 % \item[Rewrite\_Set\_Inst:] ${\it substitution}\Rightarrow{\it
402 % ruleset}\Rightarrow{\it term}\Rightarrow{\it term} * {\it term}\;{\it
405 \item[Substitute:] ${\it substitution}\Rightarrow{\it
406 term}\Rightarrow{\it term}$:
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
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).
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.
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:
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
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.
446 \item[Or:] ${\it tactic}\Rightarrow{\it tactic}\Rightarrow{\it
447 term}\Rightarrow{\it term}$:
450 \item[@@:] ${\it tactic}\Rightarrow{\it tactic}\Rightarrow{\it
451 term}\Rightarrow{\it term}$:
453 \item[While:] ${\it term::bool}\Rightarrow{\it tactic}\Rightarrow{\it
454 term}\Rightarrow{\it term}$:
458 no input / output --- Lucas-Interpretation
460 .\\.\\.\\TODO\\.\\.\\
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.
470 \subsection{Mechanization of Math --- Domain Engineering}\label{isabisac}
472 %WN was Fachleute unter obigem Titel interessiert findet sich
473 %WN unterhalb des auskommentierten Textes.
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
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.
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}.
504 % \subsection{Educational Mathematics Assistants (EMAs)}\label{emas}
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.
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:
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.
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.
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
550 % \subsubsection{Generation of User Guidance in EMAs}\label{user-guid}
552 % One essential feature for educational software is feedback to user
553 % input and assistance in coming to a solution.
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.
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}.
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.
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).
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.
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.
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}.
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).}:
631 {\small\begin{tabbing}
632 123\=123\=123\=123\=\kill
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 \\
639 \>\> rule4: ``$\vert\vert$ z $\vert\vert$ > $\vert\vert$ $\alpha$ $\vert\vert$ ==> z / (z - $\alpha$) = $\alpha^n$ $\cdot$ u [n]'' and\\
641 \>\> rule5: ``$\vert\vert$ z $\vert\vert$ < $\vert\vert$ $\alpha$ $\vert\vert$ ==> z / (z - $\alpha$) = -($\alpha^n$) $\cdot$ u [-n - 1]'' and\\
643 \>\> rule6: ``$\vert\vert$ z $\vert\vert$ > 1 ==> z/(z - 1)$^2$ = n $\cdot$ u [n]''\\
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.
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).
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''~\cite{TODO-formal-methods}
670 are expected to proceed to formal and explicit description of physical items. Signal Processing,
671 for instance is concerned with physical devices for signal acquisition
672 and reconstruction, which involve measuring a physical signal, storing
673 it, and possibly later rebuilding the original signal or an
674 approximation thereof. For digital systems, this typically includes
675 sampling and quantization; devices for signal compression, including
676 audio compression, image compression, and video compression, etc.
677 ``Domain engineering''\cite{db-domain-engineering} is concerned with
678 {\em specification} of these devices' components and features; this
679 part in the process of mechanization is only at the beginning in domains
680 like Signal Processing.
682 \subparagraph{TP-based programming, concern of this paper,} is determined to
683 add ``algorithmic knowledge'' in Fig.\ref{fig:mathuni} on
684 p.\pageref{fig:mathuni}. As we shall see below, TP-based programming
685 starts with a formal {\em specification} of the problem to be solved.
688 \subsection{Specification of the Problem}\label{spec}
689 %WN <--> \chapter 7 der Thesis
690 %WN die Argumentation unten sollte sich NUR auf Verifikation beziehen..
692 The problem of the running example is textually described in
693 Fig.\ref{fig-interactive} on p.\pageref{fig-interactive}. The {\em
694 formal} specification of this problem, in traditional mathematical
695 notation, could look like is this:
697 %WN Hier brauchen wir die Spezifikation des 'running example' ...
699 %JR Habe input, output und precond vom Beispiel eingefügt brauche aber Hilfe bei
700 %JR der post condition - die existiert für uns ja eigentlich nicht aka
701 %JR haben sie bis jetzt nicht beachtet WN...
702 %WN2 Mein Vorschlag ist, das TODO zu lassen und deutlich zu kommentieren.
705 {\small\begin{tabbing}
706 123,\=postcond \=: \= $\forall \,A^\prime\, u^\prime \,v^\prime.\,$\=\kill
709 \>input \>: filterExpression $X=\frac{3}{(z-\frac{1}{4}+-\frac{1}{8}*\frac{1}{z}}$\\
710 \>precond \>: filterExpression continius on $\mathbb{R}$ \\
711 \>output \>: stepResponse $x[n]$ \\
712 \>postcond \>: TODO - (Mind the following remark)\\ \end{tabbing}}
714 \paragraph{Remark on post-conditions:} Defining the postcondition requires a
715 high amount mathematical knowledge, the difficult part in our case is not to
716 set up this condition nor it is more to define it in a way the interpreter is
717 able to handle it. Due the fact that implementing that mechanisms is quite
718 the same amount as creating the programm itself, it is not avaible in our
719 prototype.\label{rm:postcond}
721 \paragraph{The implementation} of the formal specification in the present
722 prototype, still bar-bones without support for authoring:
723 %WN Kopie von Inverse_Z_Transform.thy, leicht versch"onert:
726 01 store_specification
727 02 (prepare_specification
729 04 "pbl_SP_Ztrans_inv"
731 06 ( ["Inverse", "Z_Transform", "SignalProcessing"],
732 07 [ ("#Given", ["filterExpression X_eq"]),
733 08 ("#Pre" , ["X_eq is_continuous"]),
734 19 ("#Find" , ["stepResponse n_eq"]),
735 10 ("#Post" , [" TODO "])],
736 11 append_rls Erls [Calc ("Atools.is_continuous", eval_is_continuous)],
738 13 [["SignalProcessing","Z_Transform","Inverse"]]));
740 Although the above details are partly very technical, we explain them
741 in order to document some intricacies of TP-based programming in the
742 present state of the {\sisac} prototype:
744 \item[01..02]\textit{store\_specification:} stores the result of the
745 function \textit{prep\_specification} in a global reference
746 \textit{Unsynchronized.ref}, which causes principal conflicts with
747 Isabelle's asyncronous document model~\cite{Wenzel-11:doc-orient} and
748 parallel execution~\cite{Makarius-09:parall-proof} and is under
749 reconstruction already.
751 \textit{prep\_pbt:} translates the specification to an internal format
752 which allows efficient processing; see for instance line {\rm 07}
754 \item[03..04] are the ``mathematics author'' holding the copy-rights
755 and a unique identifier for the specification within {\sisac},
756 complare line {\rm 06}.
757 \item[05] is the Isabelle \textit{theory} required to parse the
758 specification in lines {\rm 07..10}.
759 \item[06] is a key into the tree of all specifications as presented to
760 the user (where some branches might be hidden by the dialog
762 \item[07..10] are the specification with input, pre-condition, output
763 and post-condition respectively; the post-condition is not handled in
764 the prototype presently. (Follow up Remark in Section~\ref{rm:postcond})
765 \item[11] creates a term rewriting system (abbreviated \textit{rls} in
766 {\sisac}) which evaluates the pre-condition for the actual input data.
767 Only if the evaluation yields \textit{True}, a program con be started.
768 \item[12]\textit{NONE:} could be \textit{SOME ``solve ...''} for a
769 problem associated to a function from Computer Algebra (like an
770 equation solver) which is not the case here.
771 \item[13] is the specific key into the tree of programs addressing a
772 method which is able to find a solution which satiesfies the
773 post-condition of the specification.
777 %WN die folgenden Erkl"arungen finden sich durch "grep -r 'datatype pbt' *"
780 % {guh : guh, (*unique within this isac-knowledge*)
781 % mathauthors: string list, (*copyright*)
782 % init : pblID, (*to start refinement with*)
783 % thy : theory, (* which allows to compile that pbt
784 % TODO: search generalized for subthy (ref.p.69*)
785 % (*^^^ WN050912 NOT used during application of the problem,
786 % because applied terms may be from 'subthy' as well as from super;
787 % thus we take 'maxthy'; see match_ags !*)
788 % cas : term option,(*'CAS-command'*)
789 % prls : rls, (* for preds in where_*)
790 % where_: term list, (* where - predicates*)
792 % (*this is the model-pattern;
793 % it contains "#Given","#Where","#Find","#Relate"-patterns
794 % for constraints on identifiers see "fun cpy_nam"*)
795 % met : metID list}; (* methods solving the pbt*)
797 %WN weil dieser Code sehr unaufger"aumt ist, habe ich die Erkl"arungen
798 %WN oben selbst geschrieben.
803 %WN das w"urde ich in \sec\label{progr} verschieben und
804 %WN das SubProblem partial fractions zum Erkl"aren verwenden.
805 % Such a specification is checked before the execution of a program is
806 % started, the same applies for sub-programs. In the following example
807 % (Example~\ref{eg:subprob}) shows the call of such a subproblem:
813 % {\ttfamily \begin{tabbing}
814 % ``(L\_L::bool list) = (\=SubProblem (\=Test','' \\
815 % ``\>\>[linear,univariate,equation,test],'' \\
816 % ``\>\>[Test,solve\_linear])'' \\
817 % ``\>[BOOL equ, REAL z])'' \\
821 % \noindent If a program requires a result which has to be
822 % calculated first we can use a subproblem to do so. In our specific
823 % case we wanted to calculate the zeros of a fraction and used a
824 % subproblem to calculate the zeros of the denominator polynom.
829 \subsection{Implementation of the Method}\label{meth}
830 %WN <--> \chapter 7 der Thesis
832 \subsection{Preparation of Simplifiers for the Program}\label{simp}
834 %JR: ich denke wir können diesen punkt weglassen, methoden wie
835 %JR: drop_questionmarks und ähnliche sind im arical nicht ersichtlich und im
836 %JR: grunde nicht relevant (ihre erstellung gleich wie functionen im nächsten
839 \subsection{Preparation of ML-Functions}\label{funs}
841 \paragraph{Explicit Problems} require explicit methods to solve them, and within
842 this methods we have some explicit steps to do. This steps can be unique for
843 a special problem or refindable in other problems. No mather what case, such
844 steps often require some technical functions behind. For the solving process
845 of the Inverse Z Transformation and the corresponding partial fraction it was
846 neccessary to build helping functions like \texttt{get\_denominator},
847 \texttt{get\_numerator} or \texttt{argument\_in}. First two functions help us
848 to filter the deonimonator or numerator out of a fraction, last one helps us to
849 get to know the bound variable in a equation.
851 By taking \texttt{get\_denominator} we want to explain how to implement new
852 functions into the existing system and how we can later use them in our program.
854 \subsubsection{Find a place to Store the Function}
855 The whole system builds up on a well defined structure of Knowledge. This
856 Knowledge sets up at the Path: \ttfamily src/Tools/isac/Knowledge\normalfont.
857 For implementing the Function \texttt{get\_denominator} (which let us extract
858 the denominator out of a fraction) we have choosen the Theory (file)
859 \texttt{Rational.thy}.
861 \subsubsection{Write down the new Function}
862 In upper Theory we now define the new function and its purpose:
864 get_denominator :: "real => real"
866 This command tells the machine that a function with the name
867 \texttt{get\_denominator} exists which gets a real expression as argument and
868 returns once again a real expression. Now we are able to implement the function itself, Example~\ref{eg:getdenom}
869 shows the implementation of \texttt{get\_denominator}.
876 02 *("get_denominator",
877 03 * ("Rational.get_denominator", eval_get_denominator ""))
879 05 fun eval_get_denominator (thmid:string) _
880 06 (t as Const ("Rational.get_denominator", _) $
881 07 (Const ("Rings.inverse_class.divide", _) $num
883 09 SOME (mk_thmid thmid ""
884 10 (Print_Mode.setmp []
885 11 (Syntax.string_of_term (thy2ctxt thy)) denom) "",
886 12 Trueprop $ (mk_equality (t, denom)))
887 13 | eval_get_denominator _ _ _ _ = NONE;\end{verbatim}
890 Line \texttt{07} and \texttt{08} are describing the mode of operation the best -
891 there is a fraction\\ (\ttfamily Rings.inverse\_class.divide\normalfont)
893 into its two parts (\texttt{ \$num \$denom}). The lines before are additionals
894 commands for declaring the function and the lines after are modeling and
895 returning a real variable out of \texttt{\$denom}.
897 \subsubsection{Add a test for the new Function}
898 \subsubsection{Use the new Function}
902 \subsection{Implementation of the TP-based Program}\label{progr}
903 %WN <--> \chapter 8 der Thesis
906 {\small\it\begin{tabbing}
907 123l\=123\=123\=123\=123\=123\=123\=123\=123\=(x \=123\=123\=\kill
908 \>{\rm 01}\> {\tt Program} InverseZTransform (X\_eq::bool) = \\
909 \>{\rm 02}\>\> {\tt LET} \\
910 \>{\rm 03}\>\>\> X\_eq = {\tt Take} X\_eq ; \\
911 \>{\rm 04}\>\>\> X\_eq = {\tt Rewrite} ruleZY X\_eq ; \\
912 \>{\rm 05}\>\>\> (X\_z::real) = lhs X\_eq ; \\ %no inside-out evaluation
913 \>{\rm 06}\>\>\> (z::real) = argument\_in X\_z; \\
914 \>{\rm 07}\>\>\> (part\_frac::real) = {\tt SubProblem} \\
915 \>{\rm 08}\>\>\>\>\>\>\>\> ( \> Isac, \\
916 \>{\rm 08}\>\>\>\>\>\>\>\>\> [partial\_fraction, rational, simplification]\\
917 \>{\rm 09}\>\>\>\>\>\>\>\>\> [simplification,of\_rationals,to\_partial\_fraction] ) \\
918 \>{\rm 10}\>\>\>\>\>\>\>\> [ (rhs X\_eq)::real, z::real ]; \\
919 \>{\rm 12}\>\>\> (X'\_eq::bool) = {\tt Take} ((X'::real =$>$ bool) z = ZZ\_1 part\_frac) ; \\
921 \>{\rm 12}\>\>\> X'\_eq = {\tt Rewrite\_Set} ruleYZ X'\_eq ; \\
922 \>{\rm 15}\>\>\> X'\_eq = {\tt Rewrite\_Set} inverse\_z X'\_eq \\
923 \>{\rm 16}\>\> {\tt IN } \\
924 \>{\rm 15}\>\>\> X'\_eq
926 % ORIGINAL FROM Inverse_Z_Transform.thy
927 % "Script InverseZTransform (X_eq::bool) = "^(*([], Frm), Problem (Isac, [Inverse, Z_Transform, SignalProcessing])*)
928 % "(let X = Take X_eq; "^(*([1], Frm), X z = 3 / (z - 1 / 4 + -1 / 8 * (1 / z))*)
929 % " X' = Rewrite ruleZY False X; "^(*([1], Res), ?X' z = 3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z)))*)
930 % " (X'_z::real) = lhs X'; "^(* ?X' z*)
931 % " (zzz::real) = argument_in X'_z; "^(* z *)
932 % " (funterm::real) = rhs X'; "^(* 3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z)))*)
934 % " (pbz::real) = (SubProblem (Isac', "^(**)
935 % " [partial_fraction,rational,simplification], "^
936 % " [simplification,of_rationals,to_partial_fraction]) "^
937 % " [REAL funterm, REAL zzz]); "^(*([2], Res), 4 / (z - 1 / 2) + -4 / (z - -1 / 4)*)
939 % " (pbz_eq::bool) = Take (X'_z = pbz); "^(*([3], Frm), ?X' z = 4 / (z - 1 / 2) + -4 / (z - -1 / 4)*)
940 % " pbz_eq = Rewrite ruleYZ False pbz_eq; "^(*([3], Res), ?X' z = 4 * (?z / (z - 1 / 2)) + -4 * (?z / (z - -1 / 4))*)
941 % " pbz_eq = drop_questionmarks pbz_eq; "^(* 4 * (z / (z - 1 / 2)) + -4 * (z / (z - -1 / 4))*)
942 % " (X_zeq::bool) = Take (X_z = rhs pbz_eq); "^(*([4], Frm), X_z = 4 * (z / (z - 1 / 2)) + -4 * (z / (z - -1 / 4))*)
943 % " 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]*)
944 % " n_eq = drop_questionmarks n_eq "^(* X_z = 4 * (1 / 2) ^^^ n * u [n] + -4 * (-1 / 4) ^^^ n * u [n]*)
945 % "in n_eq)" (*([], Res), X_z = 4 * (1 / 2) ^^^ n * u [n] + -4 * (-1 / 4) ^^^ n * u [n]*)
950 \section{Workflow of Programming in the Prototype}\label{workflow}
952 \subsection{Preparations and Trials}\label{flow-prep}
953 TODO Build\_Inverse\_Z\_Transform.thy ... ``imports PolyEq DiffApp Partial\_Fractions''
956 %JR: Hier sollte eigentlich stehen was nun bei 4.3.1 ist. Habe das erst kürzlich
957 %JR: eingefügt; das war der beinn unserer Arbeit in
958 %JR: Build_Inverse_Z_Transformation und beschreibt die meiner Meinung nach bei
959 %JR: jedem neuen Programm nötigen Schritte.
961 \subsection{Implementation in Isabelle/{\isac}}\label{flow-impl}
963 \paragraph{At the beginning} of the implementation it is good to decide on one
964 way the problem should be solved. We also did this for our Z-Transformation
965 Problem and have choosen the way it is also thaugt in the Signal Processing
967 \subparagraph{By writing down} each of this neccesarry steps we are describing
968 one line of our upcoming program. In the following example we show the
969 Calculation on the left and on the right the tactics in the program which
970 created the respective formula on the left.
976 123l\=123\=123\=123\=123\=123\=123\=123\=123\=123\=123\=123\=\kill
977 \>{\rm 01}\> $\bullet$ \> {\tt Problem } (Inverse\_Z\_Transform, [Inverse, Z\_Transform, SignalProcessing]) \`\\
978 \>{\rm 02}\>\> $\vdash\;\;X z = \frac{3}{z - \frac{1}{4} - \frac{1}{8} \cdot z^{-1}}$ \`{\footnotesize {\tt Take} X\_eq}\\
979 \>{\rm 03}\>\> $X z = \frac{3}{z + \frac{-1}{4} + \frac{-1}{8} \cdot \frac{1}{z}}$ \`{\footnotesize {\tt Rewrite} ruleZY X\_eq}\\
980 \>{\rm 04}\>\> $\bullet$\> {\tt Problem } [partial\_fraction,rational,simplification] \`{\footnotesize {\tt SubProblem} \dots}\\
981 \>{\rm 05}\>\>\> $\vdash\;\;\frac{3}{z + \frac{-1}{4} + \frac{-1}{8} \cdot \frac{1}{z}}=$ \`- - -\\
982 \>{\rm 06}\>\>\> $\frac{24}{-1 + -2 \cdot z + 8 \cdot z^2}$ \`- - -\\
983 \>{\rm 07}\>\>\> $\bullet$\> solve ($-1 + -2 \cdot z + 8 \cdot z^2,\;z$ ) \`- - -\\
984 \>{\rm 08}\>\>\>\> $\vdash$ \> $\frac{3}{z + \frac{-1}{4} + \frac{-1}{8} \cdot \frac{1}{z}}=0$ \`- - -\\
985 \>{\rm 09}\>\>\>\> $z = \frac{2+\sqrt{-4+8}}{16}\;\lor\;z = \frac{2-\sqrt{-4+8}}{16}$ \`- - -\\
986 \>{\rm 10}\>\>\>\> $z = \frac{1}{2}\;\lor\;z =$ \_\_\_ \`- - -\\
987 \> \>\>\>\> \_\_\_ \`- - -\\
988 \>{\rm 11}\>\> \dots\> $\frac{4}{z - \frac{1}{2}} + \frac{-4}{z - \frac{-1}{4}}$ \`\\
989 \>{\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)}\\
990 \>{\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 }\\
991 \>{\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}\\
992 \>{\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}}
997 % ORIGINAL FROM Inverse_Z_Transform.thy
998 % "Script InverseZTransform (X_eq::bool) = "^(*([], Frm), Problem (Isac, [Inverse, Z_Transform, SignalProcessing])*)
999 % "(let X = Take X_eq; "^(*([1], Frm), X z = 3 / (z - 1 / 4 + -1 / 8 * (1 / z))*)
1000 % " X' = Rewrite ruleZY False X; "^(*([1], Res), ?X' z = 3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z)))*)
1001 % " (X'_z::real) = lhs X'; "^(* ?X' z*)
1002 % " (zzz::real) = argument_in X'_z; "^(* z *)
1003 % " (funterm::real) = rhs X'; "^(* 3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z)))*)
1005 % " (pbz::real) = (SubProblem (Isac', "^(**)
1006 % " [partial_fraction,rational,simplification], "^
1007 % " [simplification,of_rationals,to_partial_fraction]) "^
1008 % " [REAL funterm, REAL zzz]); "^(*([2], Res), 4 / (z - 1 / 2) + -4 / (z - -1 / 4)*)
1010 % " (pbz_eq::bool) = Take (X'_z = pbz); "^(*([3], Frm), ?X' z = 4 / (z - 1 / 2) + -4 / (z - -1 / 4)*)
1011 % " pbz_eq = Rewrite ruleYZ False pbz_eq; "^(*([3], Res), ?X' z = 4 * (?z / (z - 1 / 2)) + -4 * (?z / (z - -1 / 4))*)
1012 % " pbz_eq = drop_questionmarks pbz_eq; "^(* 4 * (z / (z - 1 / 2)) + -4 * (z / (z - -1 / 4))*)
1013 % " (X_zeq::bool) = Take (X_z = rhs pbz_eq); "^(*([4], Frm), X_z = 4 * (z / (z - 1 / 2)) + -4 * (z / (z - -1 / 4))*)
1014 % " 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]*)
1015 % " n_eq = drop_questionmarks n_eq "^(* X_z = 4 * (1 / 2) ^^^ n * u [n] + -4 * (-1 / 4) ^^^ n * u [n]*)
1016 % "in n_eq)" (*([], Res), X_z = 4 * (1 / 2) ^^^ n * u [n] + -4 * (-1 / 4) ^^^ n * u [n]*)
1020 \subsection{Transfer into the Isabelle/{\isac} Knowledge}\label{flow-trans}
1021 TODO http://www.ist.tugraz.at/isac/index.php/Extend\_ISAC\_Knowledge\#Add\_an\_example ?
1027 -------------------------------------------------------------------
1029 Material, falls noch Platz bleibt ...
1031 -------------------------------------------------------------------
1034 \subsubsection{Trials on Notation and Termination}
1036 \paragraph{Technical notations} are a big problem for our piece of software,
1037 but the reason for that isn't a fault of the software itself, one of the
1038 troubles comes out of the fact that different technical subtopics use different
1039 symbols and notations for a different purpose. The most famous example for such
1040 a symbol is the complex number $i$ (in cassique math) or $j$ (in technical
1041 math). In the specific part of signal processing one of this notation issues is
1042 the use of brackets --- we use round brackets for analoge signals and squared
1043 brackets for digital samples. Also if there is no problem for us to handle this
1044 fact, we have to tell the machine what notation leads to wich meaning and that
1045 this purpose seperation is only valid for this special topic - signal
1047 \subparagraph{In the programming language} itself it is not possible to declare
1048 fractions, exponents, absolutes and other operators or remarks in a way to make
1049 them pretty to read; our only posssiblilty were ASCII characters and a handfull
1050 greek symbols like: $\alpha, \beta, \gamma, \phi,\ldots$.
1052 With the upper collected knowledge it is possible to check if we were able to
1053 donate all required terms and expressions.
1055 \subsubsection{Definition and Usage of Rules}
1057 \paragraph{The core} of our implemented problem is the Z-Transformation, due
1058 the fact that the transformation itself would require higher math which isn't
1059 yet avaible in our system we decided to choose the way like it is applied in
1060 labratory and problem classes at our university - by applying transformation
1061 rules (collected in transformation tables).
1062 \paragraph{Rules,} in {\sisac{}}'s programming language can be designed by the
1063 use of axiomatizations like shown in Example~\ref{eg:ruledef}
1069 axiomatization where
1070 rule1: ``1 = $\delta$[n]'' and
1071 rule2: ``|| z || > 1 ==> z / (z - 1) = u [n]'' and
1072 rule3: ``|| z || < 1 ==> z / (z - 1) = -u [-n - 1]''
1076 This rules can be collected in a ruleset and applied to a given expression as
1077 follows in Example~\ref{eg:ruleapp}.
1083 \item Store rules in ruleset:
1085 val inverse_Z = append_rls "inverse_Z" e_rls
1086 [ Thm ("rule1",num_str @{thm rule1}),
1087 Thm ("rule2",num_str @{thm rule2}),
1088 Thm ("rule3",num_str @{thm rule3})
1090 \item Define exression:
1092 val sample_term = str2term "z/(z-1)+z/(z-</delta>)+1";\end{verbatim}
1093 \item Apply ruleset:
1095 val SOME (sample_term', asm) =
1096 rewrite_set_ thy true inverse_Z sample_term;\end{verbatim}
1100 The use of rulesets makes it much easier to develop our designated applications,
1101 but the programmer has to be careful and patient. When applying rulesets
1102 two important issues have to be mentionend:
1103 \subparagraph{How often} the rules have to be applied? In case of
1104 transformations it is quite clear that we use them once but other fields
1105 reuqire to apply rules until a special condition is reached (e.g.
1106 a simplification is finished when there is nothing to be done left).
1107 \subparagraph{The order} in which rules are applied often takes a big effect
1108 and has to be evaluated for each purpose once again.
1110 In our special case of Signal Processing and the rules defined in
1111 Example~\ref{eg:ruledef} we have to apply rule~1 first of all to transform all
1112 constants. After this step has been done it no mather which rule fit's next.
1114 \subsubsection{Helping Functions}
1116 \paragraph{New Programms require,} often new ways to get through. This new ways
1117 means that we handle functions that have not been in use yet, they can be
1118 something special and unique for a programm or something famous but unneeded in
1119 the system yet. In our dedicated example it was for example neccessary to split
1120 a fraction into numerator and denominator; the creation of such function and
1121 even others is described in upper Sections~\ref{simp} and \ref{funs}.
1123 \subsubsection{Trials on equation solving}
1124 %simple eq and problem with double fractions/negative exponents
1125 \paragraph{The Inverse Z-Transformation} makes it neccessary to solve
1126 equations degree one and two. Solving equations in the first degree is no
1127 problem, wether for a student nor for our machine; but even second degree
1128 equations can lead to big troubles. The origin of this troubles leads from
1129 the build up process of our equation solving functions; they have been
1130 implemented some time ago and of course they are not as good as we want them to
1131 be. Wether or not following we only want to show how cruel it is to build up new
1132 work on not well fundamentials.
1133 \subparagraph{A simple equation solving,} can be set up as shown in the next
1140 ["equality (-1 + -2 * z + 8 * z ^^^ 2 = (0::real))",
1146 ["abcFormula","degree_2","polynomial","univariate","equation"],
1147 ["no_met"]);\end{verbatim}
1150 Here we want to solve the equation: $-1+-2\cdot z+8\cdot z^{2}=0$. (To give
1151 a short overview on the commands; at first we set up the equation and tell the
1152 machine what's the bound variable and where to store the solution. Second step
1153 is to define the equation type and determine if we want to use a special method
1154 to solve this type.) Simple checks tell us that the we will get two results for
1155 this equation and this results will be real.
1156 So far it is easy for us and for our machine to solve, but
1157 mentioned that a unvariate equation second order can have three different types
1158 of solutions it is getting worth.
1159 \subparagraph{The solving of} all this types of solutions is not yet supported.
1160 Luckily it was needed for us; but something which has been needed in this
1161 context, would have been the solving of an euation looking like:
1162 $-z^{-2}+-2\cdot z^{-1}+8=0$ which is basically the same equation as mentioned
1163 before (remember that befor it was no problem to handle for the machine) but
1164 now, after a simple equivalent transformation, we are not able to solve
1166 \subparagraph{Error messages} we get when we try to solve something like upside
1167 were very confusing and also leads us to no special hint about a problem.
1168 \par The fault behind is, that we have no well error handling on one side and
1169 no sufficient formed equation solving on the other side. This two facts are
1170 making the implemention of new material very difficult.
1172 \subsection{Formalization of missing knowledge in Isabelle}
1174 \paragraph{A problem} behind is the mechanization of mathematic
1175 theories in TP-bases languages. There is still a huge gap between
1176 these algorithms and this what we want as a solution - in Example
1183 X\cdot(a+b)+Y\cdot(c+d)=aX+bX+cY+dY
1186 \noindent A very simple example on this what we call gap is the
1187 simplification above. It is needles to say that it is correct and also
1188 Isabelle for fills it correct - \emph{always}. But sometimes we don't
1189 want expand such terms, sometimes we want another structure of
1190 them. Think of a problem were we now would need only the coefficients
1191 of $X$ and $Y$. This is what we call the gap between mechanical
1192 simplification and the solution.
1197 \paragraph{We are not able to fill this gap,} until we have to live
1198 with it but first have a look on the meaning of this statement:
1199 Mechanized math starts from mathematical models and \emph{hopefully}
1200 proceeds to match physics. Academic engineering starts from physics
1201 (experimentation, measurement) and then proceeds to mathematical
1202 modeling and formalization. The process from a physical observance to
1203 a mathematical theory is unavoidable bound of setting up a big
1204 collection of standards, rules, definition but also exceptions. These
1205 are the things making mechanization that difficult.
1214 \noindent Think about some units like that one's above. Behind
1215 each unit there is a discerning and very accurate definition: One
1216 Meter is the distance the light travels, in a vacuum, through the time
1217 of 1 / 299.792.458 second; one kilogram is the weight of a
1218 platinum-iridium cylinder in paris; and so on. But are these
1219 definitions usable in a computer mechanized world?!
1224 \paragraph{A computer} or a TP-System builds on programs with
1225 predefined logical rules and does not know any mathematical trick
1226 (follow up example \ref{eg:trick}) or recipe to walk around difficult
1232 \[ \frac{1}{j\omega}\cdot\left(e^{-j\omega}-e^{j3\omega}\right)= \]
1233 \[ \frac{1}{j\omega}\cdot e^{-j2\omega}\cdot\left(e^{j\omega}-e^{-j\omega}\right)=
1234 \frac{1}{\omega}\, e^{-j2\omega}\cdot\colorbox{lgray}{$\frac{1}{j}\,\left(e^{j\omega}-e^{-j\omega}\right)$}= \]
1235 \[ \frac{1}{\omega}\, e^{-j2\omega}\cdot\colorbox{lgray}{$2\, sin(\omega)$} \]
1237 \noindent Sometimes it is also useful to be able to apply some
1238 \emph{tricks} to get a beautiful and particularly meaningful result,
1239 which we are able to interpret. But as seen in this example it can be
1240 hard to find out what operations have to be done to transform a result
1241 into a meaningful one.
1246 \paragraph{The only possibility,} for such a system, is to work
1247 through its known definitions and stops if none of these
1248 fits. Specified on Signal Processing or any other application it is
1249 often possible to walk through by doing simple creases. This creases
1250 are in general based on simple math operational but the challenge is
1251 to teach the machine \emph{all}\footnote{Its pride to call it
1252 \emph{all}.} of them. Unfortunately the goal of TP Isabelle is to
1253 reach a high level of \emph{all} but it in real it will still be a
1254 survey of knowledge which links to other knowledge and {{\sisac}{}} a
1255 trainer and helper but no human compensating calculator.
1257 {{{\sisac}{}}} itself aims to adds \emph{Algorithmic Knowledge} (formal
1258 specifications of problems out of topics from Signal Processing, etc.)
1259 and \emph{Application-oriented Knowledge} to the \emph{deductive} axis of
1260 physical knowledge. The result is a three-dimensional universe of
1261 mathematics seen in Figure~\ref{fig:mathuni}.
1265 \includegraphics{fig/universe}
1266 \caption{Didactic ``Math-Universe'': Algorithmic Knowledge (Programs) is
1267 combined with Application-oriented Knowledge (Specifications) and Deductive Knowledge (Axioms, Definitions, Theorems). The Result
1268 leads to a three dimensional math universe.\label{fig:mathuni}}
1272 %WN Deine aktuelle Benennung oben wird Dir kein Fachmann abnehmen;
1273 %WN bitte folgende Bezeichnungen nehmen:
1275 %WN axis 1: Algorithmic Knowledge (Programs)
1276 %WN axis 2: Application-oriented Knowledge (Specifications)
1277 %WN axis 3: Deductive Knowledge (Axioms, Definitions, Theorems)
1279 %WN und bitte die R"ander von der Grafik wegschneiden (was ich f"ur *.pdf
1280 %WN nicht hinkriege --- weshalb ich auch die eJMT-Forderung nicht ganz
1281 %WN verstehe, separierte PDFs zu schicken; ich w"urde *.png schicken)
1283 %JR Ränder und beschriftung geändert. Keine Ahnung warum eJMT sich pdf's
1284 %JR wünschen, würde ebenfalls png oder ähnliches verwenden, aber wenn pdf's
1285 %JR gefordert werden WN2...
1286 %WN2 meiner Meinung nach hat sich eJMT unklar ausgedr"uckt (z.B. kann
1287 %WN2 man meines Wissens pdf-figures nicht auf eine bestimmte Gr"osse
1288 %WN2 zusammenschneiden um die R"ander weg zu bekommen)
1289 %WN2 Mein Vorschlag ist, in umserem tex-file bei *.png zu bleiben und
1290 %WN2 png + pdf figures mitzuschicken.
1292 \subsection{Notes on Problems with Traditional Notation}
1294 \paragraph{During research} on these topic severely problems on
1295 traditional notations have been discovered. Some of them have been
1296 known in computer science for many years now and are still unsolved,
1297 one of them aggregates with the so called \emph{Lambda Calculus},
1298 Example~\ref{eg:lamda} provides a look on the problem that embarrassed
1305 \[ f(x)=\ldots\; \quad R \rightarrow \quad R \]
1308 \[ f(p)=\ldots\; p \in \quad R \]
1311 \noindent Above we see two equations. The first equation aims to
1312 be a mapping of an function from the reel range to the reel one, but
1313 when we change only one letter we get the second equation which
1314 usually aims to insert a reel point $p$ into the reel function. In
1315 computer science now we have the problem to tell the machine (TP) the
1316 difference between this two notations. This Problem is called
1317 \emph{Lambda Calculus}.
1322 \paragraph{An other problem} is that terms are not full simplified in
1323 traditional notations, in {{\sisac}} we have to simplify them complete
1324 to check weather results are compatible or not. in e.g. the solutions
1325 of an second order linear equation is an rational in {{\sisac}} but in
1326 tradition we keep fractions as long as possible and as long as they
1327 aim to be \textit{beautiful} (1/8, 5/16,...).
1328 \subparagraph{The math} which should be mechanized in Computer Theorem
1329 Provers (\emph{TP}) has (almost) a problem with traditional notations
1330 (predicate calculus) for axioms, definitions, lemmas, theorems as a
1331 computer program or script is not able to interpret every Greek or
1332 Latin letter and every Greek, Latin or whatever calculations
1333 symbol. Also if we would be able to handle these symbols we still have
1334 a problem to interpret them at all. (Follow up \hbox{Example
1341 u\left[n\right] \ \ldots \ unitstep
1344 \noindent The unitstep is something we need to solve Signal
1345 Processing problem classes. But in {{{\sisac}{}}} the rectangular
1346 brackets have a different meaning. So we abuse them for our
1347 requirements. We get something which is not defined, but usable. The
1348 Result is syntax only without semantic.
1353 In different problems, symbols and letters have different meanings and
1354 ask for different ways to get through. (Follow up \hbox{Example
1361 \widehat{\ }\ \widehat{\ }\ \widehat{\ } \ \ldots \ exponent
1364 \noindent For using exponents the three \texttt{widehat} symbols
1365 are required. The reason for that is due the development of
1366 {{{\sisac}{}}} the single \texttt{widehat} and also the double were
1367 already in use for different operations.
1372 \paragraph{Also the output} can be a problem. We are familiar with a
1373 specified notations and style taught in university but a computer
1374 program has no knowledge of the form proved by a professor and the
1375 machines themselves also have not yet the possibilities to print every
1376 symbol (correct) Recent developments provide proofs in a human
1377 readable format but according to the fact that there is no money for
1378 good working formal editors yet, the style is one thing we have to
1381 \section{Problems rising out of the Development Environment}
1383 fehlermeldungen! TODO
1385 \section{Conclusion}\label{conclusion}
1389 \bibliographystyle{alpha}
1390 \bibliography{references}