]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/papers/calculemus-2003/hbugs-calculemus-2003.tex
- several changes in all the parts that made comparisons with MONET
[helm.git] / helm / papers / calculemus-2003 / hbugs-calculemus-2003.tex
index ecce0e4fc923cf70e5bc244390087ec77c8e9532..c95f4fb2ef5baa829e60c61f5406a04a5224c2b5 100644 (file)
@@ -34,7 +34,7 @@
 \institute{
   Department of Computer Science\\
   University of Bologna\\
-  Via di Mura Anteo Zamboni 7, 40127 Bologna, ITALY\\
+  Mura Anteo Zamboni 7, 40127 Bologna, ITALY\\
   \email{sacerdot@cs.unibo.it}
   \and
   Department of Computer Science\\
@@ -62,7 +62,9 @@
   and beginners (who can learn from it).
 \end{abstract}
 
-\section{Introduction}
+\section{Introduction\ednote{Zack: attualmente sembra che posto ne abbiamo: se
+la situazione non muta un 10 righe su \helm{} possiamo metterle, non tanto per
+la conferenza quanto per i posteri}}
   The \ws{} approach at software development seems to be a working solution for
   getting rid of a wide range of incompatibilities between communicating
   software applications. W3C's efforts in standardizing related technologies
   for client applications to access a wide variety of services and abstract over
    them.
 
-  Since the \emph{Declaration of Linz}, the MONET Consortium \cite{MONET},
+  \oldpart Since the \emph{Declaration of Linz}, the MONET Consortium \cite{MONET},
   following the guidelines \ednote{guidelines non e' molto appropriato, dato che
   il concetto di broker non e' definito da W3C e co} of the \wss{}/brokers
   approach, is working on the development of a framework aimed at providing a
   set of software tools for the advertisement and discovering of mathematical
   \wss{}.
+  \begin{newpart}Since the \emph{Declaration of Linz}, the MONET Consortium
+  \cite{MONET}, is working on the development of a framework, based on the
+  \wss{}/brokers approac, aimed at providing a set of software tools for the
+  advertisement and the discovery of mathematical \wss{}.\end{newpart}
   %CSC This framework turns out to be strongly based on both \wss{} and brokers.
 
   Several groups have already developed \wss{} providing both computational and
   status from a client (the proof-assistant) to the tutors;
   each tutor try to make progress in the proof and, in case
   of success, notify the client that shows an \emph{hint} to the user.
-  Both the broker and the tutors are instances of the homonymous entities of
-  the MONET framework.
+  The broker is an instance of the homonymous entity of the MONET framework.
+  The tutors are MONET services. Another \ws (which is not described in this
+  paper and which is called Getter \cite{}) is used to locate and download
+  mathematical entities; the Getter plays the role of the Mathematical Object
+  Manager in the MONET framework.
 
   A precursor of \hbugs{} is the \OmegaAnts{} project \cite{???},
   which provided similar functionalities to the
   \Omegapp{} proof-planner \cite{Omega}. The main architectural difference
-  between \hbugs{} and \OmegaAnts{} is that the latter is based on a
+  between \hbugs{} and \OmegaAnts{} are that the latter is based on a
   black-board architecture and it is not implemented using \wss{} and
   brokers. Other differences will be detailed in Sect. \ref{conclusions}.
 
   domain.
 }
 
-\section{Architecture}
+\section{An \hbugs{} Bird'S Eye View\ednote{Zack: sono in vena di boiate
+stasera!}}
 \label{architecture}
   \myincludegraphics{arch}{t}{8cm}{\hbugs{} architecture}{\hbugs{} architecture}
 
     An \hbugs{} client is a software component able to produce \emph{proof
     status} and to consume \emph{hints}.
 
-    \ednote{Zack: "status" ha il plurale? CSC: no}
     A proof status is a representation of an incomplete proof and is supposed to
     be informative enough to be used by an interactive proof assistant. No
     additional requirements exist on the proof status, but there should be an
     agreement on its format between clients and tutors. An hint is a
-    representation\ednote{non c'\'e un sinonimo pi\'u carino?}
+    representation\ednote{CSC: non c'\'e un sinonimo pi\'u carino? Zack: l'unico
+    decente sembra essere nuovamente "suggestion"}
     of a step that can be performed in order to proceed in an
     incomplete proof. Usually it represents a reference to a tactic available
     on some proof assistant along with an instantiation for its formal
     parameters. More structured hints can also be used: an hint can be
     as complex as a whole proof-plan.
 
-    Clients act both as \ws{} provider and requester (using W3C's terminology
-    \cite{ws-glossary}). They act as providers for the broker (to receive hints)
-    and as requesters (to submit new status). Clients
+    \myincludegraphics{interfaces}{t}{8cm}{\hbugs{} \wss{} interfaces}{\hbugs{}
+    \wss{} interfaces}
+
+    Using W3C's terminology \cite{ws-glossary}, clients act both as \ws{}
+    provider and requester, see \ednote{Zack: va bene "see"?, "cfr" credo sia
+    solo italiano ...} Fig. \ref{interfaces}.
+    They act as providers for the broker (to receive hints)
+    and as requesters (to submit new status) \ednote{Zack: non manca il "for"
+    anche per i requesters?}. Clients
     additionally use broker service to know which tutors are available and to
     subscribe to one or more of them.
 
     the user be the means of some effect in the user interface (e.g. popping a
     dialog box or enlightening a tactic button).
 
-    \hbugs{} clients act as MONET clients and ask broker to provide access to a
+    \hbugs{} clients act as MONET clients and ask brokers to provide access to a
     set of services (the tutors). \hbugs{} has no actors corresponding to
     MONET's Broker Locating Service (since the client is supposed to know the
-    URI of at least one broker) and Mathematical Object Manager (since proof
-    status are built on the fly and not stored).
+    URI of at least one broker). The \hbugs{} client and tutors contact the
+    Getter (a MONET Mathematical Object Manager) to locate and retrieve
+    mathematical items in the HELM library. The proof status that are exchanged
+    by the \hbugs{} actors, instead, are built on the fly and are neither
+    stored nor are given an unique identifier (URI) to be managed by the
+    Getter.
 
   \paragraph{Brokers}
-    \hbugs{} brokers are the key actors of the \hbugs{} architecture since they
-    act as intermediaries between clients and tutors. They behave as \ws{}
-    providers and requesters for \emph{both} clients and tutors.
+    Brokers are the key actors of the \hbugs{} architecture since they
+    act as intermediaries between clients and tutors. They behave as \wss{}
+    providers and requesters for \emph{both} clients and tutors, see Fig.
+    \ref{interfaces}.
 
     With respect to client, a broker act as \ws{} provider, receiving the
     proof status and forwarding it to one or more tutors.
     by requesting computations (\emph{musings} in \hbugs{} terminology) on
     status received by clients and by stopping already late but still
     ongoing \musings{}
-    \ednote{Sta frase va comunque riscritta perch\'e non si capisce una mazza}.
+    \ednote{CSC: Sta frase va comunque riscritta perch\'e non si capisce una
+    mazza. Zack: io intanto ho aggiunto una figura, vorrei pero' un tuo commento
+    sulla utilita'/quantita' delle figure ...}
 
     Additionally brokers keep track of available tutors and clients
     subscriptions.
     \hbugs{} brokers act as MONET brokers implementing the following components:
     Client Manager, Service Registry Manager (keeping track of available
     tutors), Planning Manager (chosing the available tutors among the ones to
-    which the client is subscribed), Execution Manager. \ednote{non e' chiaro se
-    in monet le risposte siano sincrone o meno, se cosi' fosse dobbiamo
-    specificare che nel nostro caso non lo sono}
+    which the client is subscribed), Execution Manager. The Service Manager
+    component is not required since the session handler, that identifies
+    a session between a service and a broker, is provided to the service by
+    the broker instead of being received from the service when it is
+    initialized. In particular, a session is identified by an unique identifier
+    for the client (its URL) and an unique identifier for the broker (its
+    URL).\ednote{CSC: OK, sto barando: \hbugs{} non \'e ancora cos\'i
+    multi-sessione. Ma mi sembra la strada che prenderemmo, no?}
+
+    The MONET architecture specification does not state explicitely whether
+    the service and broker answers can be asyncronous. Nevertheless, the
+    described information flow implicitly suggests a syncronous implementation.
+    On the contrary, in \hbugs{} every request is asyncronous: the connection
+    used by an actor to issue a query is immediately closed; when a service
+    produces an answer, it gives it back to the issuer by calling the
+    appropriate actor's method.
 
   \paragraph{Tutors}
     Tutors are software component able to consume proof status producing hints.
 
     \hbugs{} tutors act as MONET services.
 
-\section{Implementation details}
+\section{Implementation's Highlights}
 \label{implementation}
 \ednote{Zack: l'aspetto grafico di questa parte e' un po' peso, possiamo
 aggiungere varie immagini volendo, e.g.: schema dei thread di un tutor, sample
 code di un tutor generato automaticamente}
-\ednote{Zack: ho cambiato idea riguardo a questa parte, mettere la lista delle
-interfacce di client/broker/... mi sembrava sterile e palloso. Di conseguenza ho
-messo i punti chiave dell'implementazione, dimmi cosa te ne pare ...}
 In this section we present some of the most relevant implementation details of
 the \hbugs{} architecture.
 
@@ -350,7 +383,8 @@ the \hbugs{} architecture.
     broker to send him an unique identifier and its base URI as a
     \ws{}. After the registration, the client can use broker's
     \texttt{List\_tutors} method to get a list of available tutors.
-    Eventually\ednote{CSC: Vuoi veramente dire eventually qui?} the
+    Eventually\ednote{CSC: Vuoi veramente dire eventually qui? Zack: si, prima o
+    poi lo faranno ...} the
     client can subscribe to one or more of these using broker's \emph{Subscribe}
     method. Clients can also unregister from brokers using
     \texttt{Unregister\_client} method.
@@ -394,7 +428,8 @@ the \hbugs{} architecture.
     just to update the \musings{} registry.
 
     Consulting the \musings{} registry, the tutor\ednote{CSC: ma \'e vero o
-    stai delirando?} is able to know, at each time,
+    stai delirando? Zack: e' vero, non ti fidi? :-) Up to delay di rete
+    ovviamente ...} is able to know, at each time,
     which \musings{} are in execution on which tutor. This peculiarity is
     exploited by the broker on invocation of Status method. Receiving a new
     status from the client imply indeed that the previous status no longer
@@ -432,7 +467,8 @@ the \hbugs{} architecture.
     received, the thread actually running them is killed freeing its
     resources.\ednote{CSC: A cosa dobbiamo questa architettura delirante? Se non
     ricordo male al problema dell'uccisione dei thread. Ora o si spiega
-    il motivo di questa architettura o si glissa/bluffa.}
+    il motivo di questa architettura o si glissa/bluffa. Zack: cosa ti sembra
+    delirante? che i thread vengono uccisi? ... non mi e' molto chiaro ...}
 
     This architecture turns out to be scalable and allows the running threads
     to share the cache of loaded (and type-checked) theorems.
@@ -573,7 +609,7 @@ we have investigated three classes of tutors:
 
   To test the productivity impact of intelligent tutors, we have implemented
   a tutor that is interfaced with the HELM
-  Proof-Engine\footnote{\url{http://mowgli.cs.unibo.it/library.html}} and that
+  Search-Engine\footnote{\url{http://mowgli.cs.unibo.it/library.html}} and that
   is able to look for every theorem in the distributed library that can
   be applied to proceed in the proof. Even if the tutor deductive power
   is extremely limited\footnote{We do not attempt to check if the new goals
@@ -584,8 +620,73 @@ we have investigated three classes of tutors:
   figuring out where the lemmas could have been stored in the library.
 \end{enumerate}
 
-\section{???}
+\section{Conclusions and Future Work}
 \label{conclusions}
+  In this paper we described a suggestion engine architecture for
+  proof-assistants: the client (a proof-assistant) sends the current proof
+  status to several distributed \wss (called tutors) that try to progress
+  in the proof and, in case of success, send back an appropriate hint
+  (a proof-plan) to the user. The user, that in the meantime was able to
+  reason and progress in the proof, is notified with the hints and can decide
+  to apply or ignore them. A broker is provided to decouple the clients and
+  the tutors and to allow the client to locate and invoke the available remote
+  services. The whole architecture is an instance of the MONET architecture
+  for Mathematical \wss.
+
+  A running prototype has been implemented as part of the HELM project \cite{}
+  and we already provide several tutors. Some of them are simple tutors that
+  try to apply one or more tactics of the HELM Proof-Engine, which is also
+  our client. We also have a much more complex tutor that is interfaced
+  with the HELM Search-Engine and looks for lemmas that can be directly applied.
+
+  We have many plan for further developing both the \hbugs{} architecture and
+  our prototype implementing them. Interesting results could be obtained
+  augmenting the informative content of each suggestion. We can for example
+  modify the broker so that also negative results are sent back to the client.
+  Those negative suggestions could be reflected in the user interface by
+  deactivating commands to narrow the choice of tactics available to the user.
+  This approach could be interesting expecially for novice users, but require
+  the client to trust other actors a bit more than in the current approach.
+
+  We plan also to add some rating mechanism to the architecture. A first
+  improvement in this direction could be to distinguish between hints that, when
+  applied, are able to completely close one or more goals and
+  tactics that progress in the proof by reducing one or more goals to new goals:
+  the new goals could be false and the proof can be closed only by backtraking.
+
+  Other heuristics and/or measures could be added to rate
+  hints and show them to the user in a particular order: an interesting one
+  could be a measure that try to minimize the size of the generated proof,
+  privileging therefore non-overkilling solutions \cite{ring}.
+
+  We are also considering to follow the \OmegaAnts{} path more closely adding
+  ``recursion'' to the system so that proof status resulting from the
+  application of old hints are cached somewhere and could be used as a starting
+  point for new hint searches. The approach is interesting, but it represents
+  a big shift towards automatic theorem proving: thus we must consider if it is
+  worth the effort given the increasing availability of automation in proof
+  assistants' tactics and the ongoing development of \wss{} based on
+  already existent and well developed theorem provers.
+
+  Even if not strictly part of the \hbugs{} architecture, the graphical user
+  interface (GUI) of our prototype needs a lot of improvement if we would like
+  it to be usable by novices. In particular, the user is too easily distracted
+  by the tutor's hints that are ``pushed'' to her.
+
+  Our \wss still lack a real integration in the MONET architecture,
+  since we do not provide the different ontologies to describe our problems,
+  solutions, queries and services. In the short term, completing this task
+  could provide a significative feedback to the MONET consortium and would
+  enlarge the current set of available MONET actors on the web. In the long
+  term, new more intelligent tutors could be developed on top of already
+  existent MONET \wss.
+
+  To conclude, \hbugs{} is a nice experiment meant to understand whether the
+  current \wss technology is mature enough to have a concrete and useful impact
+  on the daily work of users of proof-assistants. So far, only the tutor that
+  is interfaced with the HELM Search-Engine has effectively increased the
+  productivity of experts users. The usefullness of the tutors developed for
+  beginners, instead, need further assessment.
 
 \begin{thebibliography}{01}