6 Brokers and Web-Services\\
7 for Automatic Deduction:\\
13 \emph{Claudio Sacerdoti Coen} \emailcsc \\
16 Department of Computer Science \\
17 University of Bologna (Italy)
20 Stefano Zacchiroli \emailzack \\
23 Department of Computer Science \\
24 \'Ecole Normale Sup\'erieure de Paris (France)
33 \item HELM's Proof Assistant
42 \item \Gray{implementation highlights (maybe)}
47 \newslide{Motivations}
49 Web-Service approach at software development \ldots
52 \item helps in getting rid of a wide range of software incompatibilities
53 \item is (hopefully) granted to have longevity
55 \ldots thus the WWW is moving \ldots
58 \item[\Red{from}] \advirecord{f}{a disorganized repository of human-understandable
60 \item[\Green{to}] \advirecord{t}{a disorganized repository of application exchanging
63 \pause \adviplay{f} \pause \adviplay{t}
65 \newslide{Motivations}
70 \item Provide a set of stable and reliable services over this disorganization
73 What about solutions? \pause \ldots \small \Red{none :-(} \pause
76 \item Just an useful architecture / widespread idea: \\
77 \hfill add an additional intermediate level of stable services and call them
81 \newslide{\Large{HELM's Proof Assistant}}
83 \advirecord{bp}{\adviembed{display eps/helmLogic.png}}
84 \Blue{\large Pros} \hfill \advianchor[click,underline]{bp}{\small{The Big
89 \item document centric
91 \item exploits the HELM distributed library
92 \hfill \Red{($\approx$ 40000 theorems/defs)}
94 \item modular, based on the HELM Web-Services
95 \hfill \Red{(via XML + OMDoc)}
98 \hfill \Red{(XSLT stylesheets, MathML)}
100 \item a wonderful name: \adviwait[1] \Gray{\large{TODO}} \adviwait[1]
101 \hfill \Red{(gTopLevel? CIClIDE?)}
104 \newslide{\Large{HELM's Proof Assistant}}
108 \item \Red{Beginners' Cons}
112 \item get lost in the available tactics
113 \item focus shouldn't be on interface issues, but rather on formal proof
116 \item \Red{Experts' Cons}
120 \item computational expensive / resource consuming tactics
121 \item too low exploitation of the HELM library
124 \pause \adviplay{B} \pause \adviplay{E}
126 \newslide{An improvement}
128 A \Blue{suggestion engine} that \ldots
131 \item \ldots works in background
132 \item \ldots notify the user out-of-band
133 \item \ldots is as much re-usable as possible
137 \pause \Red{\OmegaAnts}? \hspace{2cm} \pause \Blue{\hbugs}!
140 \newslide{\hbugs{} Actors}
144 \item[\large{clients}]
145 ~\advirecord{c}{\parbox[t]{0.7\textwidth}{\small Software components able to
146 produce \Blue{proof status} consuming \Red{hints}}}
147 \item[\large{tutors}]
148 ~\advirecord{t}{\parbox[t]{0.7\textwidth}{\small Software components able to
149 consume \Red{proof status} producing \Blue{hints}}}
150 \item[\large{brokers}]
151 ~\advirecord{b}{\parbox[t]{0.7\textwidth}{\small Software components which
152 act as \Green{intermediaries} decoupling clients and tutors}}
155 \pause \adviplay{c} \pause \adviplay{t} \pause \adviplay{b}
157 \newslide{\hbugs{} Architecture}
160 \myincludegraphics{hbugsArch}{0.8\textwidth}
162 \newslide{\hbugs{} Web-Services}
165 \myincludegraphics{hbugsInterfaces}{0.8\textwidth}
167 \newslide{\hbugs{} Messages}
169 \advirecord{dia}{\adviembed{dia-gnome misc/messages.dia}}
172 \advianchor[click,underline]{dia}{messages.dia}
175 \newslide{\hbugs{} Tutors}
178 \Blue{I. Tutors for beginners}
181 \item \Red{Assumption} thesis equivalent to one of the hypotheses
182 \item \Red{Contradiction} reductio ad absurdum
183 \item \Red{Simmetry} commutative property over equalities
184 \item \Red{Left/Right/Exists/Split/Reflexivity/Constructor} inductive type
185 constructors application
188 \newslide{\hbugs{} Tutors}
191 \Blue{II. Tutors for computationally expensive tactics}
194 \item \Red{Ring} associative and commutative rewritings over ring structures
195 \item \Red{Fourier} solves linear inequation systems (over R)
199 \Blue{III. Intelligent tutors}
202 \item \Red{Search pattern Apply} search for applicable theorems from the
203 HELM library (search + unification ``attempts'')
206 \newslide{\hbugs{} Demo}
211 \fbox{\parbox{0.8\textwidth}{
212 \textbf{\Red{Exercise 1.}}
215 \emph{Let $x$ be a generic real number. Using the \helm{} proof-engine, prove
220 x = \frac{(x+1)^2 - 1 - x^2}{2}
224 \newslide{\Large \hbugs{} Tutors' Implementation}
227 \Blue{\begin{citemize}
230 \item \ldots are multi-threaded
232 \item \ldots present a Web-Service interface
234 \item \ldots perform a lot of similar operations (decoding proof status,
235 encoding hints, parse and submit HTTP requests, \ldots)
239 \advirecord{a}{\FromRight{is not that difficult, but \ldots}}
241 \advirecord{b}{\FromRight{\Red{requires a lot of duplicated code/work :-(}}}
243 \pause \adviplay{a} \adviwait[0.5] \adviplay{b}
245 \newslide{\Large \hbugs{} Tutors' Implementation}
247 {\small To avoid the repetitive task of implementing a tutor each time we
248 develop a new tactic:}
251 \item[I.] ~\advirecord{a}{we have written a \Green{generic tutor
253 \item[II.] ~\advirecord{b}{we \Green{instantiate} it with each available tactic
254 starting from an XML signature of each tutor}
255 \begin{Verbatim}[fontshape=it,fontsize=\tiny,formatcom=\color{blue}]
256 <tutor source="symmetry_tutor.ml">
257 <addr>127.0.0.1</addr>
259 <tactic>EqualityTactics.symmetry_tac</tactic>
260 <hint>Hbugs_types.Use_symmetry_Luke</hint>
261 <hint_type>Use Symmetry Luke</hint_type>
262 <description>Symmetry tutor</description>
263 <environment_file>symmetry.environment</environment_file>
267 \pause \adviplay{a} \pause \adviplay{b}
269 \newslide{\hbugs{} Future Work}
273 \Blue{\Large{A lot!}}
277 \item ~\advirecord{a}{implement more \advirecord{b}{\Gray{(Intelligent)}}
279 \item ~\advirecord{c}{interfacing of CASs \hfill \Red{(Field tactic?)}}
280 \item ~\advirecord{d}{non-hint \hfill \Red{(warnings?)}}
281 \item ~\advirecord{e}{hints rating}
282 \item ~\advirecord{f}{MONET integration \hfill \Red{ontologies, reuse}}
283 \item ~\advirecord{g}{work on the GUI!}
286 \pause \adviplay{a} \adviwait[0.3] \adviplay{b} \pause \adviplay{c} \pause
287 \adviplay{d} \pause \adviplay{e} \pause \adviplay{f} \pause \adviplay{g}
289 \newslide{References}
293 \item A. Asperti, F. Guidi, L. Padovani, C. Sacerdoti Coen, I. Schena.
294 Mathematical Knowledge Management in HELM. In Annals of Mathematics and
295 Artificial Intelligence, 38(1): 27--46, May 2003.
296 \item C. Benzm\"uller, M. Jamnik, M. Kerber, V. Sorge.
297 Agent-based Mathematical Reasoning. In A. Armando and T. Jebelean (eds.),
298 Electronic Notes in Theoretical Computer Science, (1999) 23(3), Elsevier.
299 \item The MONET Consortium, MONET Architecture Overview,
300 Public Deliverable D04 of the MONET Project.\\
301 \texttt{http://monet.nag.co.uk/cocoon/monet/publicsdocs/monet-overview.pdf}
302 \item S. Zacchiroli. \emph{Web services per il supporto alla
303 dimostrazione interattiva}, Master Thesis, University of Bologna, 2002.
306 \newslide{That's all Folks!}
310 \myincludegraphics{thatsall}{0.4\textwidth}