Enrico Tassi [Sat, 22 Mar 2008 11:01:57 +0000 (11:01 +0000)]
freescale moved under contribs. contribs made relocatable
since all internal Makefile include a Makefile.defs defining
where to find matita*
tests should not be affected since the output of the compilation is
the same and the URIs are the same
Enrico Tassi [Thu, 20 Mar 2008 17:42:42 +0000 (17:42 +0000)]
changed auto_tac params type and all derivate tactics like applyS and
demodulate honors the same syntax.
new syntax for auto parameters:
auto string-params by only_terms_to_use
new syntax for declarative eq chains:
[(conclude|obtain H) t1] = t2 (auto-params|exact t|using t|proof)
exact t : apply t
using t : 1 demodulation step using t
auto-params : first [ auto ; auto paramodulation ]
proof : id_tac
manual still to be updated
End of patch for computation of LetIn types. Now types of mutually (co)recursive
function are added to the environment _after_ Implicit have been resolved.
Ferruccio Guidi [Tue, 18 Mar 2008 19:12:57 +0000 (19:12 +0000)]
Procedural : tentative update to the new letin cic construction
LAMBDA-TYPES: level 1 is stand alone instead of coq dependent
level 2 is untested so will not compile for now :)
legacy : unpublished
:-(
This commit introduces an hack in deannotate.ml to compute on-the-fly the types
for the body in a LetIn parsed from an XML file. This happens when parsing Coq
files. We should re-export everything from Coq sooner or later.
New version of freescale:
a) bug fixed for SBC, JUMP e JSR
b) medium_tests theorems ported to new pattern syntax
c) new test for a perfect number generator
d) "lambda-delifting" of let rec reverted (waiting for a better
implementation of simplify or for the new generation kernel)
Almost always correct optimization: during unification, a meta-closed term and
a term that is not meta closed are not tried for convertibility. This greatly
speeds up, for instance, some examples in Bertrand.
Bad hack to avoid failure of conversion (unfolding) in "unfold t in H" where
H is a definition. In this case it is perfectly normal that t may not occur
in the type or in the body of H.
Tactic reduce got rid of. Use normalize, instead.
Rationale: the two tactics did the very same thing, but normalizes exploits
reduction machines and so it is really faster in many cases.
whd: ~delta=false now controls also zeta-reduction. This greatly speed-ups
some operations when definitions are in the context.
Moreover, the semantics seems more reasonable (????).
check_metasenv_consistency:
big ad-hoc performance improvement propagated from CicTypeChecker to CicRefine.
This really cuts down the total refinement time in some situations (freescale).
Added ad-hoc optimization for check_metasenv_consistency, case Rel to Let-in
vs Def. Rationale: this is the case of an IRL when the metavariable is
created in a context with definitions. Without this optimization, a (possibly
expensive) reduction is always triggered.
Note: this should be better handled using a reduction strategy based on
heights.
Potentially (and, at least sometimes, actually) big performance improvement:
let-in were always zeta-expanded during delifting. As a result, implicit,
in a context with definitions, were always refined with a type that was well
typed, but only up to (potentially expensive) reduction!
Redundant check (because of an invariant) removed.
The check was added by Tassi when adding universe constraints.
However, it is now believed to be useless.
Ferruccio Guidi [Sat, 23 Feb 2008 21:58:11 +0000 (21:58 +0000)]
LAMBDA-TYPES:
we introduced incremental dependences build to speed up the compilation
dependences are now dynamic so the file "depends" was removed from svn
Enrico Tassi [Wed, 20 Feb 2008 17:48:16 +0000 (17:48 +0000)]
splat_args is now better understood and debugged: we need TWO splat_args, one when
the term is a Rel (that skips the bound variables) and one when the term is a Fix
(that passes bound variables around).