1. is_meta_closed should be applied only to terms on which a substitution
has already been applied. Fixed here and there.
Note: it is not possible to add a subst parameter to is_meta_closed since
the function is declared in cic/CicUtil and it is used where the unification
is not available (e.g. in whelp and library)
2. known (but never verified before) bug fixed: delifting should fail
(instead of raising Uncertain) iff the local context is not meta_closed.
The test used to be "does not contain a Meta"
1. bug fixed: Unicode characters that are not mapped to TeX macros used to
be post-fixed with a blank
2. bug fixed: the textual pretty-printer does not implement the same
spacing politics of GtkMathView. Since that politics is very very complex
to implement, I try a different solution: we explicitly insert a space
where we want one. The widget does not seem to be disturbed by this.
This way the let ... rec and match ... with constructs are now printed
correctly and they can be read back.
3. syntax change: applicative patterns no longer require parentheses around
them
Our unification used to guess a very complex argument of an apply in
fermat_little_theorem. It does no longer, but the old behaviour seems to be
really lucky. Thus I change the .ma file.
Andrea Asperti [Fri, 20 Oct 2006 15:32:34 +0000 (15:32 +0000)]
a. uniform mangement for context and library
b. collapsing flexible terms (X args) into a single meta. Metas in
head position give arity problems with discrimination trees.
c. Even terms with a single meta as conlcusion (e.g. elimination
principles) get indexed.
Andrea Asperti [Fri, 20 Oct 2006 14:50:40 +0000 (14:50 +0000)]
This is only a temporary patch. The typecheker raises a
CicUniv.UniverseInconsistency that should be properly
captured and transformed into a tyepchecking error.
Potential performance improvement + better disambiguation error messages:
the delift functions used to raise Uncertain every time it failed; now it
raises Failure when the local context contains no Metas (that means that
for every future subst it will not contain new Rels).
Note: if we are working up to conversion (I do not think so), we should check
that the local context is Meta-closed, that is a weaker check.
Missing optimization implemented: before starting to analyze the disambiguation
domain we try first without interpreting any symbol. This way we can avoid
lot of refinements when the information in the uninterpreted term already
tells us that every instance will not be well typed.
- Disambiguation error exception enriched with more information
(the same returned in case of correct disambiguation)
- The disambiguation error interface now shows the complete environment
in which the error occurs. I am not sure if this is better or worst than
showing only the diffs.
Bug fixed: the diff component of the exception raised when the term cannot
be disambiguated used to lack the last choice in case of the look-ahead
optimization.
Enrico Tassi [Thu, 12 Oct 2006 13:34:32 +0000 (13:34 +0000)]
timeout if unspecfied should be set to infinity, not 0, since the timeout inside the flagfs structure is a time in the future, not a decreasing quantity.
every loop of auto the check gettimeofday() > timeout raise Fail
1. applyS now uses its ~params
2. autoTactic.ml* is going to be deprecated.
auto.ml* has now the expected interface (that of a tactic)
and it is almost ready to replace autoTactic.ml
Andrea Asperti [Mon, 9 Oct 2006 11:00:31 +0000 (11:00 +0000)]
The two coercions sym_eq e eq_f gives BIG TROUBLES when checking composition during
qed. In particular, checking composition calls unification, that calls reductions,
that is problematic when there are a lot of lein in the context (as is it the case
with proofs generated by TPTP: see eg GRP486-1.p.ma )
1. some "try ... with _ " removed
2. type inference of LetIn terms is now closer than the kernel
3. LetIn code fixed to add the type to the Defs in the environment
4. some typos fixed
Enrico Tassi [Tue, 3 Oct 2006 16:08:31 +0000 (16:08 +0000)]
commented out are_convertible in is_identity
fixed metadataquery so that only are calculated without the DB (but are calculated)
removed is_meta_convertible left right in is_weak_identity
added extra dependencies between gcd < relevant_equations < ord to make
paramodulation happy. In the past this used to be the order used by make.
added an hack in applys.ma, since it used to work due to convertibility.