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
- 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