[ 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
- content/interpretations.ml and ng_cic_content/nTermCicContent.ml where
mutually recursive and part of the status was kept imperatively;
the two files have been merged together into ng_cic_content/interpretations.ml
Andrea Asperti [Thu, 4 Nov 2010 13:36:47 +0000 (13:36 +0000)]
- Print/Set commands removed
- stupid bug fixed in interpretations: we did not add the new id to the
id list, so that only the first interpretation was considered
- added a new field to the interpretations status to record the recently
added aliases that need to be made explicit in the script; much better
than what we did before (alias diffing)
Ferruccio Guidi [Wed, 3 Nov 2010 21:02:44 +0000 (21:02 +0000)]
last commit for helena 0.8.1
- xsl : we can render the levels of the abstractions
- ccs : we output three kinds of constraints
- Makefiles: we automatized the relising process
- brgCrg : all abstractions have infinite level for now
Ferruccio Guidi [Tue, 2 Nov 2010 22:06:52 +0000 (22:06 +0000)]
- the connections between the intermediate language and the "bag"
kernel were missing
- the connections between the intermediate language and the "bag"
kernel are now tail recursive
- the dtd now declares the "level" attribute
- some "assert false" removed in crg
- xml exportation of the data processed by the "bag" kernel is now
available
- the "bag" kernel now uses Entity names rather than identifiers
Andrea Asperti [Fri, 29 Oct 2010 11:27:11 +0000 (11:27 +0000)]
- grammar of // changed to move the justification inside;
reason: that brain damaged piece of software that is CAMLP5 does a
lookahead and then it forgets to rollback the token (why??? is it
a bug). As a consequence matita used to work (since it parses a
statement at a time), but not matitac (since the lookahead destroyed
the next command)
- core_notation.moo: \frac used to be at level 90, but this is incorrect
during parsing and incompatible with the new syntax; \frac is now
used only in output
- minor dead code removal here and there