Large commit: refactoring of the code of the interface.
1. management of font sizes centralized in MatitaMisc according to the
MVC paradigm
2. functionalities related to the script window moved from MatitaGui to
MatitaScript
Class mathViewer got rid of. The circular dependency between
the scripts needs to be sorted out by putting matitaScript much
later in the chain. This commit temporary introduces bad type
expressions here and there.
1. Method screenshot moved to CicMathView where it belongs to.
2. the mutual dependency between MatitaScript and CicMathView/MatitaMathView
needs to be solved differently (it used to be solved using guistuff, which
I do not consider any longer a good solution). To be done.
With this commit, anything related to MathML vs Textual is now in
cicMathView.ml.
1) matitaMathView.ml splitted into cicMathView.ml + matitaMathView.ml
2) interface of matitaMathView.ml and cicMathView.ml greatly simplifed
so to avoid any reference to the textual/MathML datatypes.
3) up to the problem of taking screenshots, the file matitaMathView.ml
is now oblivious of the difference between text and MathML. It will
be soon possible to switch between text and MathML simply by changing
the implementation of cicMathView.
This commit simplifies the interfaces of the various Widget-related .mli
files, so that the same inferfaces can be used both for the MathMl widget and
the textual widget.
Practically, it is now sufficient to switch between two implementations of
matitaMathView to change between MathML/textual.
1) some dead code removed
2) code of MatitaClean commented out (but still there for disambiguation and
the like?)
3) dependencies and uris moved into dumpable_status (from other statuses
and/or imperative code) and made functional
4) all the bugs related to recursive compilation seem to have been fixed by 3)
Andrea Asperti [Thu, 16 Dec 2010 11:51:30 +0000 (11:51 +0000)]
Some bugs fixed (and some still open) in recursive compilation of files:
a) matitac now takes again either a list of files to be compiled or
nothing (to compile all files in the cwd)
b) ...
Previous patch improved: we now use an ad-hoc wrapper for Grammar.parsable
in order to localize all Obj.magic --- related to use of Ulexing in Camlp5 ---
in GrafiteParser (as they used to be).
BIG BUG FIXED (???): in place of using Grammar.Entry.parse we should have
used from the beginning Grammar.Entry.parse_parsable in order to avoid token
loss (because of backtracking) between consecutive reads. I have fixed the issue
for statements only (since they are the one that show the problem). Should I
do the same everywhere?
Patch to avoid double creation of metavariables changed to a simpler one
that keeps disambiguating twice the term. The old patch introduced a few
bugs that were difficult to fix.
Andrea Asperti [Fri, 10 Dec 2010 12:35:26 +0000 (12:35 +0000)]
Big change:
- new command "include alias" to include only the aliases
- "include" now always includes the aliases and it includes everything else
only if the file has not been already included
Andrea Asperti [Fri, 10 Dec 2010 10:58:22 +0000 (10:58 +0000)]
Patch to avoid double creation of metavariables changed to a simpler one
that keeps disambiguating twice the term. The old patch introduced a few
bugs that were difficult to fix.
Ferruccio Guidi [Fri, 3 Dec 2010 16:14:02 +0000 (16:14 +0000)]
first commit for Helena 0.8.2
autCrg: we removed the computation of the de Bruijn degree
output: we renamed some reductions to reflect the latest terminology
brgSubstitution: icm related bugfix
[ porting from CerCo's Matita ]
1. new implementation of normalize to have a speed up in case of fully applicative terms
2. all reduction tactics used to end with instatiate that re-checked the conversion using
unification (!!!); added a new flag ?(refine=true) to instantiate to avoid this expensive
check when we know it is useless
1. new implementation of normalize to have a speed up in case of fully applicative terms
2. all reduction tactics used to end with instatiate that re-checked the conversion using
unification (!!!); added a new flag ?(refine=false) to instantiate to avoid this expensive
check when we know it is useless
- GREAT: when unifying ?1 : Type[i] with ?2: Type[j] the unifier
randomly tried to instantiate ?1 with ?2 even when j > i, yielding to
an unification error later on. In turn, this created that horrible
behaviour of rewriting that failed if you did not pass enough types
to the lemma.
- in rewriting the argument is now automatically saturated
These two fixes together allow most of the time to write simply >f as we
did in the old system.
New behaviour of fo_unif: in case of ?f args == t args'
where at least one args is flexible, it now unifies in parallel even if the
two args have different lenghts (as in the old version of Matita).
- GREAT: when unifying ?1 : Type[i] with ?2: Type[j] the unifier
randomly tried to instantiate ?1 with ?2 even when j > i, yielding to
an unification error later on. In turn, this created that horrible
behaviour of rewriting that failed if you did not pass enough types
to the lemma.
- in rewriting the argument is now automatically saturated
These two fixes together allow most of the time to write simply >f as we
did in the old system.
Bug fixed: analysing inductive type that contains implicit used to
duplicate the metas in the metasenv since the term was disambiguated
twice, in the analyze and in the tactic that uses the analyze.
Andrea Asperti [Fri, 26 Nov 2010 13:18:50 +0000 (13:18 +0000)]
- GREAT: when unifying ?1 : Type[i] with ?2: Type[j] the unifier
randomly tried to instantiate ?1 with ?2 even when j > i, yielding to
an unification error later on. In turn, this created that horrible
behaviour of rewriting that failed if you did not pass enough types
to the lemma.
- in rewriting the argument is now automatically saturated
These two fixes together allow most of the time to write simply >f as we
did in the old system.
New behaviour of fo_unif: in case of ?f args == t args'
where at least one args is flexible, it now unifies in parallel even if the
two args have different lenghts (as in the old version of Matita).
Andrea Asperti [Thu, 18 Nov 2010 09:58:42 +0000 (09:58 +0000)]
Bug fixed: analysing inductive type that contains implicit used to
duplicate the metas in the metasenv since the term was disambiguated
twice, in the analyze and in the tactic that uses the analyze.
1) matita.glade ported from glade2 to glade3
2) added a workaround (using xmlling) to convert &#x....; chars generated
by glade3 into unicode symbols to avoid a corresponding lexing bug in
lablgladecc2 :-(
Andrea Asperti [Fri, 5 Nov 2010 15:18:53 +0000 (15:18 +0000)]
Huge change!!!
- matitadep & co removed (RIP)
- both matita and matitac can now recursively compile files as needed
- librarian greatly simplified: now it only handles roots