X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Fpapers%2Fmatita%2Fmatita2.tex;h=f2e411d4a6b097227b4a315698d3993d97caa0fb;hb=6db12650bceb071d9b5ea8f882613a98bd6df79b;hp=94e21bb198fa40df78ffcb45d150692555157c92;hpb=768514ae739c7b9a8c5a89a3684496912d1ced05;p=helm.git diff --git a/helm/papers/matita/matita2.tex b/helm/papers/matita/matita2.tex index 94e21bb19..f2e411d4a 100644 --- a/helm/papers/matita/matita2.tex +++ b/helm/papers/matita/matita2.tex @@ -123,6 +123,7 @@ Digital Libraries} \end{opening} + \section{Introduction} \label{sec:intro} \MATITA{} is the Proof Assistant under development by the \HELM{} team @@ -273,7 +274,7 @@ allow other developers to quickly understand our code and contribute. \end{center} \end{figure} -\section{Overview of the Architecture} +\section{Architecture} Fig.~\ref{fig:libraries} shows the architecture of the \emph{\components} (circle nodes) and \emph{applications} (squared nodes) developed in the HELM project. @@ -634,627 +635,759 @@ services missing from the standard library of the programming language. In particular, the \texttt{xml} \component{} is used to easily represent, parse and pretty-print XML files. -\section{Partially specified terms} ---- il mondo delle tattiche e dintorni --- -serve una intro che almeno cita il widget (per i patterns) e che fa -il resoconto delle cose che abbiamo e che non descriviamo, -sottolineando che abbiamo qualcosa da dire sui pattern e sui -tattichini.\\ +\section{Using \MATITA (boh \ldots cambiare titolo)} +\begin{figure}[t] + \begin{center} +% \includegraphics[width=0.9\textwidth]{a.eps} + \caption{\MATITA{} screenshot} + \label{fig:screenshot} + \end{center} +\end{figure} +\MATITA{} has a script based user interface. As can be seen in Fig.~... it is +split in two main windows: on the left a textual widget is used to edit the +script, on the right the list of open goal is shown using a MathML rendering +widget. A distinguished part of the script (shaded in the screenshot) represent +the commands already executed and can't be edited without undoing them. The +remaining part can be freely edited and commands from that part can be executed +moving down the execution point. An additional window --- the ``cicBrowser'' --- +can be used to browse the library, including the proof being developed, and +enable content based search on it. In the cicBrowser proofs are rendered in +natural language, automatically generated from the low-level $\lambda$-terms +using techniques inspired by \cite{natural,YANNTHESIS}. + +In the \MATITA{} philosophy the script is not relevant \emph{per se}, but is +only seen as a convenient way to create mathematical objects. The universe of +all these objects makes up the \HELM{} library, which is always completely +visible to the user. The mathematical library is thus conceived as a global +hypertext, where objects may freely reference each other. It is a duty of +the system to guide the user through the relevant parts of the library. + +This methodological assumption has many important consequences +which will be discussed in the next section. + +%on one side +%it requires functionalities for the overall management of the library, +%%%%%comprising efficient indexing techniques to retrieve and filter the +%information; +%on the other it introduces overloading in the use of +%identifiers and mathematical notation, requiring sophisticated disambiguation +%techniques for interpreting the user inputs. +%In the next two sections we shall separately discuss the two previous +%points. + +%In order to maximize accessibility mathematical objects are encoded in XML. (As%discussed in the introduction,) the modular architecture of \MATITA{} is +%organized in components which work on data in this format. For instance the +%rendering engine, which transform $\lambda$-terms encoded as XML document to +%MathML Presentation documents, can be used apart from \MATITA{} to print ... +%FINIRE + +A final section is devoted to some innovative aspects +of the authoring system, such as a step by step tactical execution, +content selection and copy-paste. + +\section{Library Management} + +\subsection{Indexing and searching} + +\subsection{Developments} + +\subsection{Automation} -\subsection{Patterns} -Patterns are the textual counterpart of the MathML widget graphical -selection. +\subsection{Matita's naming convention} +A minor but not entirely negligible aspect of Matita is that of +adopting a (semi)-rigid naming convention for identifiers, derived by +our studies about metadata for statements. +The convention is only applied to identifiers for theorems +(not definitions), and relates the name of a proof to its statement. +The basic rules are the following: +\begin{itemize} +\item each identifier is composed by an ordered list of (short) +names occurring in a left to right traversal of the statement; +\item all identifiers should (but this is not strictly compulsory) +separated by an underscore, +\item identifiers in two different hypothesis, or in an hypothesis +and in the conlcusion must be separated by the string ``\verb+_to_+''; +\item the identifier may be followed by a numerical suffix, or a +single or duoble apostrophe. -Matita benefits of a graphical interface and a powerful MathML rendering -widget that allows the user to select pieces of the sequent he is working -on. While this is an extremely intuitive way for the user to -restrict the application of tactics, for example, to some subterms of the -conclusion or some hypothesis, the way this action is recorded to the text -script is not obvious.\\ -In \MATITA{} this issue is addressed by patterns. +\end{itemize} +Take for instance the theorem +\[\forall n:nat. n = plus \; n\; O\] +Possible legal names are: \verb+plus_n_O+, \verb+plus_O+, +\verb+eq_n_plus_n_O+ and so on. +Similarly, consider the theorem +\[\forall n,m:nat. n