]> matita.cs.unibo.it Git - helm.git/commitdiff
Added a new section on automation
authorAndrea Asperti <andrea.asperti@unibo.it>
Tue, 31 Jan 2006 10:13:20 +0000 (10:13 +0000)
committerAndrea Asperti <andrea.asperti@unibo.it>
Tue, 31 Jan 2006 10:13:20 +0000 (10:13 +0000)
helm/papers/matita/matita.bib
helm/papers/matita/matita2.tex

index 8aa1c4882a5aecce42eec255e484ab6d85b44031..7d98905d56e5ff0b6833e5df58753c6a6fee2b1a 100644 (file)
@@ -1,3 +1,12 @@
+@inproceedings{paramodulation,
+  author = "Robert Nieuwenhuis and Alberto Rubio",
+  title = "Paramodulation-based thorem proving",
+  booktitle = "Handbook of Automated Reasoning",
+  editor = "John Alan Robinson and Andrei Voronkov",
+  pages = "471--443",
+  publisher = "Elsevier and MIT Press",
+  year = 2001,
+}
 
 @inproceedings{latexmathml,
  author = {Luca Padovani},
index 2332ced9d691ac14f7a38233a28668ed4e3a97a3..65b5882af121a964c1c2ec38d7c98055b0c4852f 100644 (file)
@@ -1171,8 +1171,80 @@ in it).
 
 \subsection{Automation}
 \label{sec:automation}
+In the long run, one would expect to work with a Proof Assistant 
+like Matita, using only three basic tactics: Intro, Elim, and Auto
+(possibly integrated by a moderate use of Cut). The state of the art
+in automated deduction is still far away from this goal, but 
+this is one of the main development direction of Matita. 
+
+Even in this field, the underlying phisolophy of Matita is to 
+free the user from any burden relative to the overall management
+of the library. For instance, in Coq, the user is responsible to 
+define small collections of theorems to be used as a parameter 
+by the Auto tactic;
+in Matita, it is the system itself that authomatically retrieves, from
+the whole library, a subset of theorems worth to be considered 
+according to the signature of the current goal and context. 
+
+The basic tactic merely performs an iterated use of the Apply tactic
+(with no Intro). The research tree may be pruned according to two 
+main parameters: the {\em depth} (whit the obvious meaning), and the 
+{\em width} that is the maximum number of (new) open goals allowed at
+any instant. Matita has only one notion of metavariable, corresponding
+to the so called existential variables of Coq; so, Matita's Auto tactic
+should be compared with Coq's EAuto. 
+
+Recently we have extended automation with paramodulation based 
+techniques. At present, the system works reasonably well with
+equational rewriting, where the notion of equality is parametric
+and can be specified by the user: the system only requires 
+a proof of {\em reflexivity} and {\em paramodulation} (or rewriting, 
+as it is usually called in the proof assistant community).
+
+Given an equational goal, Matita recovers all known equational facts
+from the library (and the local context), applying a variant of
+the so called {\em given-clause algorithm} \cite{paramodulation}, 
+that is the the procedure currently used by the majority of modern theorem 
+provers. 
+
+The given-clause algorithm is essentially composed by an alternation
+of a {\em saturation} phase, deriving new facts by a set of active
+facts and a new {\em given} clause suitably selected from a set of passive
+equations, 
+and a {\em demodulation} phase that tries to simplify the equations
+orienting them according to a suitable weight associated with terms.
+Matita currently supports several different weigthing functions
+comprising Knuth-Bendix ordering (kbo) and recursive path ordering (rpo), 
+that integrates particualry well with normalization.
+
+Demodulation alone is already a quite powerful technique, and 
+it has been turned into a tactic by itself: the {\em demodulate}
+tactic, which can be seen as a kind of generalization of {\em simplify}. 
+The following portion of script describes two
+interesting cases of application of this tactic (both of them relying 
+on elementary arithmetic equations):
+
+\begin{verbatim}
+theorem example1: 
+  \forall x:nat. (x+1)*(x-1)=x*x - 1.
+intro.
+apply (nat_case x)
+[simplify;reflexivity
+|intro;demodulate;reflexivity]
+qed.
+
+theorem example2: 
+  \forall x,y:nat. (x+y)*(x+y) = x*x + 2*x*y + y*y.
+intros;demodulate;reflexivity.
+qed.
+\end{verbatim}
+
+In the future we expect to integrate applicative and equational 
+rewriting. In particular, the overall idea would be to integrate
+applicative rewriting with demodulation, treating saturation as an
+operation to be performed in batch mode, e.g. during the night. 
+
 
-\TODO{sezione sull'automazione}
 
 \subsection{Naming convention}
 \label{sec:naming}