Tacticals invoked from the top-level but the ones implemented on top
of tinycals where not working properly because of several bugs.
The current commit changes the code in quite a few places:
1) there is no longer a function Tacticals.Make since tacticals implemented
on top of tinycals always instantiated the functor with
Tacticals.ProofEngineStatus, and the toplevel can avoid any instantiation
at all since it can invoke tinycals directly on the low-level machine
(implemented by the functor Continuationals.Make)
2) when GrafiteEngine now meets a punctuation tacticals, it directly invokes
an instantiation of Continuationals.Make, without going througw Tacticals.
Instead, when it meets a real tactical, it directly invokes Tacticals
(where Continuationals.Make is applied to Tacticals.ProofEngineStatus
and not to the module defined in GrafiteEngine and used for punctuation
tacticals)
3) most of the tacticals not implemented on top of tinycals were bugged
(and unused). E.g.: solve always diverged unless it was applied to the
empty list. All these bugs have been fixed.
The commit is incomplete since:
1) all tacticals not implemented on top of tactics now accept only a single
tactic as argument (if they require a list, the list must be a singleton).
This limitation is going to disappear again, but we must change GrafiteAst
so that an atomic tactical becomes a recursive tactic.
2) Seq and Then are not branched (for the same reasons as 1 and a bit of
lazyness)
3) several auxiliary functions in the argument of Continuaniolas.Make can now
be removed since they were introduced for wrong reasons.
alpha equivalence fixed: in the case "meta against meta" we did not recur on theexplicit substitutions. The case "Type against Type" and "Implicit against Implicit" need to be checked. Are we really sure that structural equality is enough?
(when we compare universes and implict annotations)
Serious bug fixed: a variable was captured during unfolding of Fix, resulting
in the context of the return type of mutually recursive definitions being
lifted for each function but the first one!
Several instances of the same bug fixed at once: when processing a Fix,
before adding the types to the context (to process the bodies), the types
must be lifted. The simplify tactic is still not working propertly.
Ferruccio Guidi [Fri, 16 Mar 2007 18:39:27 +0000 (18:39 +0000)]
elim tactic: it needs two arguments, a term as well as a pattern
CicReduction: head_beta_reduce now can take the number of beta-redexes to reduce
Procedural: refactoring
Ferruccio Guidi [Tue, 13 Mar 2007 13:21:56 +0000 (13:21 +0000)]
elim tactic: now takes a pattern instead of just a term
works as before for now. the pattern wil be activated soon
Procedural: cleaning up
ProofEngineReduction: new subst_inv function exactly inverts subst
Ferruccio Guidi [Thu, 1 Mar 2007 19:00:14 +0000 (19:00 +0000)]
Procedural: some improvements
rewrite tactic: bug fix in hyps searching
TermContentPres: one space added in let-in rendering
prova.ma: new procedural proof of ty3_gen_cast
Ferruccio Guidi [Wed, 21 Feb 2007 14:15:55 +0000 (14:15 +0000)]
procedural : some improvements.
decompose tactic: user provided premise and types removed.
The decomposable types are now the non-recursive inductive
types without right parameters and are auto-detected
Ferruccio Guidi [Wed, 14 Feb 2007 17:10:16 +0000 (17:10 +0000)]
Procedural : some improvements
PrimitiveTactics : tentative implementation of using clause in elim
CicNotationParser: noe declarations of the form (_:t) are parsable
Added toggle for enabling/disabling the conversion from multibyte unicode
characters to TeX when converting CIC terms to textual formulae. The toggle is
under the Edit menu (rational: it's near the paste commands, maybe it should be
added to the GtkSourceView contextual menu too). The toggle governs the
matita.paste_unicode_as_tex boolean registry value. The txt_of_* rendering
functions have been changed to accept a new optional boolean parameter.
* 'default "equality"' command changed to consider also
eq_rec, eq_rec_r, eq_rect, eq_rect_r
* rewrite tactic changed to rewrite also in goals of type Set and Type
* more progress in technicalities/setoids.ma
Important commit:
from now on the pretty printer CicMetaSubst.ppterm_in_context is substituted
with a reference to an high level pretty-printer (now defined in
matita/applyTransformation.ml). In the debug menu there is a switch to turn
it off and get back the old pretty-printer.