Enrico Tassi [Mon, 5 May 2008 17:02:26 +0000 (17:02 +0000)]
get_check_fix and cofix unified, bug regarding debruijnation of constructors types fixed everywhere.
the constructor typs are debruinated wrt some inductive type uri an not wrt
their own, thus a wrong context was created. guarded by constructors ported from the old kernel.
Enrico Tassi [Mon, 5 May 2008 16:43:04 +0000 (16:43 +0000)]
get_checked_indtys can take a constructor reference
Enrico Tassi [Mon, 5 May 2008 16:42:12 +0000 (16:42 +0000)]
added mk_cofix
Enrico Tassi [Mon, 5 May 2008 16:41:52 +0000 (16:41 +0000)]
let corec
Enrico Tassi [Mon, 5 May 2008 16:41:39 +0000 (16:41 +0000)]
CoFix cache implemented
Enrico Tassi [Mon, 5 May 2008 13:40:34 +0000 (13:40 +0000)]
fix_left_in_constr still broken, ask enrico
Enrico Tassi [Mon, 5 May 2008 13:34:10 +0000 (13:34 +0000)]
guarded_by_constructors implemented, some cleanup here and there.
fix_lefts_in_constr fixed: the inductive type list was returned with
constructors instantiated and debruijned, but with types whose arity was
instantiated with lefts too. This is wrong since we want to use these types to
build a context, that is closed, and will be put at the end of the actual
context since debruijn will make uris point to those terms
Enrico Tassi [Mon, 5 May 2008 13:31:59 +0000 (13:31 +0000)]
removed dead code
Enrico Tassi [Mon, 5 May 2008 11:40:57 +0000 (11:40 +0000)]
...
Claudio Sacerdoti Coen [Sat, 3 May 2008 21:31:45 +0000 (21:31 +0000)]
Bug fixed in handling of explicit named substitutions: it could happen that
explicit named substitution are merged not in the expected order. This happens
comparing the case of an instantiation inside and outside a (nested) section.
Thus I have added back the re-ordering of the explicit named substitution in
CicSubstitution.subst_vars and in CicReduction.unwind_aux. Moreover, I have
added to CicTypechecker.type_of_aux' the check that verifies if an explicit
named substitution is ordered.
Claudio Sacerdoti Coen [Sat, 3 May 2008 14:52:17 +0000 (14:52 +0000)]
Broken XML files either fixed or removed.
Wilmer Ricciotti [Fri, 2 May 2008 13:40:56 +0000 (13:40 +0000)]
Some destruct tactics got broken after last update. Small axiomatization
still included.
Claudio Sacerdoti Coen [Thu, 1 May 2008 17:31:31 +0000 (17:31 +0000)]
More precise classification of failures.
Claudio Sacerdoti Coen [Thu, 1 May 2008 17:30:20 +0000 (17:30 +0000)]
List of all URIS comprising:
- coq objects
- matita standard library
- all matita tests and matita contribs that compile today
Claudio Sacerdoti Coen [Thu, 1 May 2008 17:16:10 +0000 (17:16 +0000)]
More options can now be set at the beginning of the file.
Claudio Sacerdoti Coen [Thu, 1 May 2008 14:11:07 +0000 (14:11 +0000)]
Last (???) bug about variables with bodies fixed: we do no longer create
applications with less than 2 args.
Claudio Sacerdoti Coen [Thu, 1 May 2008 13:59:06 +0000 (13:59 +0000)]
Another case where the presence of variables with bodies resulted in the
creation of an application without arguments.
Enrico Tassi [Thu, 1 May 2008 12:44:26 +0000 (12:44 +0000)]
tagging 0.5.0-rc1
Claudio Sacerdoti Coen [Thu, 1 May 2008 10:57:00 +0000 (10:57 +0000)]
Bug fixed: application without arguments generated in case of an ens made only
of variables with bodies.
Claudio Sacerdoti Coen [Thu, 1 May 2008 10:45:19 +0000 (10:45 +0000)]
New bug found.
Claudio Sacerdoti Coen [Wed, 30 Apr 2008 23:33:38 +0000 (23:33 +0000)]
Things are getting better.
Claudio Sacerdoti Coen [Wed, 30 Apr 2008 23:12:21 +0000 (23:12 +0000)]
Implementation of guarded_by_destructor is now complete w.r.t. the old kernel:
a) bug fixed in eat_lambdas_etc: we cannot apply the term to the residual
arguments since these are not left arguments
b) when the recursive argument of the nested "let rec" is safe, the formal
argument can also be considered safe.
TODO:
This implementation of condition b) could be improved by re-writing eat_lambdas
in such a way that it uses a shift_k function to add the context item to the
"context".
Claudio Sacerdoti Coen [Wed, 30 Apr 2008 22:51:05 +0000 (22:51 +0000)]
Reducing an open term should not be an error (or should it be???) and it
should not raise Failure (that's for sure!).
Claudio Sacerdoti Coen [Wed, 30 Apr 2008 21:38:26 +0000 (21:38 +0000)]
stupid error fixed
Claudio Sacerdoti Coen [Wed, 30 Apr 2008 20:50:58 +0000 (20:50 +0000)]
fixed_args fixed to accept passing a partially applied fix to a fix that
passes itself partially applied to anothere fix
Enrico Tassi [Wed, 30 Apr 2008 19:42:34 +0000 (19:42 +0000)]
added check on all bodies, only the one we actually encountered is applied to all arguments, other boedies are applied only up to j
Enrico Tassi [Wed, 30 Apr 2008 19:04:28 +0000 (19:04 +0000)]
added fake uri when the univ is anon
Enrico Tassi [Wed, 30 Apr 2008 17:02:00 +0000 (17:02 +0000)]
fixed wrong Rel, still to do: Fix(i,j) applied to dangerous rel, check all bodies in parallel, not just the i-th
Enrico Tassi [Wed, 30 Apr 2008 15:50:06 +0000 (15:50 +0000)]
universes are written with the URI inside objects, this allows
universes to be actually shared between objects and no duplication is necessary.
in this way the typechecker is more strict and unification can be an ungly beast implicitly
adding an = constranint between two universes. speedup granted!
Enrico Tassi [Wed, 30 Apr 2008 10:53:27 +0000 (10:53 +0000)]
xml strict!
Enrico Tassi [Wed, 30 Apr 2008 10:46:54 +0000 (10:46 +0000)]
many pending modifications were there, now the website at least validates
Enrico Tassi [Wed, 30 Apr 2008 10:17:34 +0000 (10:17 +0000)]
guarded_by_destructors on steroids
when Fix/i args and some args are not guarded
1) fixed params in interval 0..i are checked for bewing just passed around
2) the fix is unfolded, debruijned, fixed arguments substituted,
not fixed arguments pushed and checked for guardednes
3) a new function with relative fixed arguments (not to be checked again)
is added to k
4) the resulting term is applied to the remaining arguments
testcase: cic:/Suresnes/MiniC/MiniC/State/sizeOfType.con
Enrico Tassi [Wed, 30 Apr 2008 10:14:23 +0000 (10:14 +0000)]
added list_mapi
Claudio Sacerdoti Coen [Tue, 29 Apr 2008 14:58:22 +0000 (14:58 +0000)]
Tests status update.
Enrico Tassi [Tue, 29 Apr 2008 10:18:56 +0000 (10:18 +0000)]
speedup in fixing the graph closures
Claudio Sacerdoti Coen [Mon, 28 Apr 2008 17:52:04 +0000 (17:52 +0000)]
Avoid (whd ~delta:true) during guarded_by_destructors as much as possible.
Note: it is better to check again if this commit is fully correct (i.e.
w.r.t. the catch-all case in the main "match ... with" of the aux function).
Claudio Sacerdoti Coen [Mon, 28 Apr 2008 17:43:33 +0000 (17:43 +0000)]
In guarded by destructors, avoid computing the (whd ~delta:true) unless the
check fails. This is a major speed up, for instance for
cic:/Coq/ZArith/Zsqrt/sqrtrempos.con
Claudio Sacerdoti Coen [Thu, 24 Apr 2008 17:08:25 +0000 (17:08 +0000)]
Update...
Claudio Sacerdoti Coen [Thu, 24 Apr 2008 16:23:53 +0000 (16:23 +0000)]
No more bugs on guarded_by_constructors in the old kernel.
Claudio Sacerdoti Coen [Thu, 24 Apr 2008 16:22:17 +0000 (16:22 +0000)]
When going under a binder, a term must be converted twice, as explained in the
previous commit. The problem is that in this way the complexity of the
translation becomes O(2^n) when n is the maximum depth of binders. However,
this computation is completely unuseful if no (co)fix is found in the term.
This commits adds as much lazyness as possible to fix the issue.
Wilmer Ricciotti [Thu, 24 Apr 2008 15:55:21 +0000 (15:55 +0000)]
Proof of adequacy.
Enrico Tassi [Thu, 24 Apr 2008 13:01:26 +0000 (13:01 +0000)]
guarded_by_constructor completely rewritten, fixed missing lift when generating the context of an inductive type in guarded_by_destructors.
Enrico Tassi [Thu, 24 Apr 2008 13:00:21 +0000 (13:00 +0000)]
added coinductive example
Claudio Sacerdoti Coen [Thu, 24 Apr 2008 12:56:14 +0000 (12:56 +0000)]
Working and broken URIs.
Enrico Tassi [Wed, 23 Apr 2008 16:41:37 +0000 (16:41 +0000)]
ported the instantiate-left-params-to-calculate-rec-args patch from the old to the new kernel,
to test the patch properly some steps of substitution inside a possibly blocked fix are performed,
this should be in general avoided without good checks (still to understand)
Claudio Sacerdoti Coen [Wed, 23 Apr 2008 08:17:26 +0000 (08:17 +0000)]
Avoid other comparisons on universes using =.
Claudio Sacerdoti Coen [Wed, 23 Apr 2008 08:09:39 +0000 (08:09 +0000)]
Avoid code duplication.
Claudio Sacerdoti Coen [Wed, 23 Apr 2008 08:04:53 +0000 (08:04 +0000)]
Do NOT dare using Pervasives.compare on data structures containing URIs!
Use UriManager.compare to get a 2x speed-up in type-checking setoids.
Enrico Tassi [Tue, 22 Apr 2008 19:18:53 +0000 (19:18 +0000)]
oblivion ugraph everywhere outside the kernel
Enrico Tassi [Tue, 22 Apr 2008 13:44:27 +0000 (13:44 +0000)]
slow_implementation and some dead code removed
Enrico Tassi [Tue, 22 Apr 2008 13:28:10 +0000 (13:28 +0000)]
more strict check by CSC, I miss it
Enrico Tassi [Tue, 22 Apr 2008 12:50:33 +0000 (12:50 +0000)]
fix cache comparison relaxed to URI and not REFERENCE
Enrico Tassi [Tue, 22 Apr 2008 12:48:10 +0000 (12:48 +0000)]
added a call to ppcontext in the case of appl, to ease the localization of the error
Enrico Tassi [Tue, 22 Apr 2008 12:47:31 +0000 (12:47 +0000)]
added ppcontext
Claudio Sacerdoti Coen [Tue, 22 Apr 2008 09:41:34 +0000 (09:41 +0000)]
Types for LetIns computed during parsing for Coq objects may contain universes
that must be made fresh.
Claudio Sacerdoti Coen [Mon, 21 Apr 2008 17:20:43 +0000 (17:20 +0000)]
defn2.ma is to be used with part1a_inversion3
the induction/inversion lemma in part1a_inversion3 is more regular w.r.t.
the meta-theory
automation pushed to its limits in part1a_inversion3.ma
Enrico Tassi [Mon, 21 Apr 2008 09:19:23 +0000 (09:19 +0000)]
fix universe handling, newly encountered objects are typed in an empty ugraph
that after the cleanup phase is committed into the cic_environement and merged
with the current one.
minor reformatting of sources and some more for_all
Claudio Sacerdoti Coen [Sun, 20 Apr 2008 21:32:11 +0000 (21:32 +0000)]
Alternative prove using just one induction/inversion principle.
Enrico Tassi [Sat, 19 Apr 2008 16:33:26 +0000 (16:33 +0000)]
better error message
Enrico Tassi [Sat, 19 Apr 2008 16:32:53 +0000 (16:32 +0000)]
...
Enrico Tassi [Sat, 19 Apr 2008 16:32:36 +0000 (16:32 +0000)]
impredicative set work around
Enrico Tassi [Sat, 19 Apr 2008 16:32:22 +0000 (16:32 +0000)]
impredicative set work around
Enrico Tassi [Sat, 19 Apr 2008 16:30:53 +0000 (16:30 +0000)]
associativity of -> fixed
Enrico Tassi [Sat, 19 Apr 2008 16:30:21 +0000 (16:30 +0000)]
ancient graph regarding universes and trust=false, universes calculated for internal objects
were used for the toplevel object (that should be sound) but cleaned using the univ list of
the internal object
Enrico Tassi [Sat, 19 Apr 2008 16:27:57 +0000 (16:27 +0000)]
extlib list_uniq instead of local copy
Enrico Tassi [Sat, 19 Apr 2008 16:27:28 +0000 (16:27 +0000)]
ranking function fixed: when graphs are collapsed one step links are not updated (nor serialized to disk)
thus you can not rely on them, just use the closures!
Enrico Tassi [Sat, 19 Apr 2008 16:26:21 +0000 (16:26 +0000)]
added flag to change Set into Type on the fly, that helps on some coq objects using impredicative set
Claudio Sacerdoti Coen [Sat, 19 Apr 2008 11:13:05 +0000 (11:13 +0000)]
oblivion_ugraph => empty_ugraph
Claudio Sacerdoti Coen [Sat, 19 Apr 2008 10:52:50 +0000 (10:52 +0000)]
Added to flags to activate/disactivate pretty-printing and exception catching.
Claudio Sacerdoti Coen [Sat, 19 Apr 2008 09:20:24 +0000 (09:20 +0000)]
Uris must be stripped of their xpointers.
Claudio Sacerdoti Coen [Fri, 18 Apr 2008 18:31:58 +0000 (18:31 +0000)]
Dead code removed.
Claudio Sacerdoti Coen [Fri, 18 Apr 2008 18:27:43 +0000 (18:27 +0000)]
Inversion lemma for Forall.
Enrico Tassi [Fri, 18 Apr 2008 16:58:38 +0000 (16:58 +0000)]
workaround for Pi associativity
Enrico Tassi [Fri, 18 Apr 2008 16:50:10 +0000 (16:50 +0000)]
workaround for some Set/Type problems
Enrico Tassi [Fri, 18 Apr 2008 15:30:40 +0000 (15:30 +0000)]
cicEnvironment refactoring with sound view of Coq`s univ-less terms
Enrico Tassi [Fri, 18 Apr 2008 15:27:39 +0000 (15:27 +0000)]
assertion was wrong, an object can contain a named univers if its uri is the one of the object itself
Enrico Tassi [Fri, 18 Apr 2008 15:26:11 +0000 (15:26 +0000)]
graph generation phase fixed
Enrico Tassi [Fri, 18 Apr 2008 13:59:17 +0000 (13:59 +0000)]
Appl case in is_really_smaller fixed as in the old kernel
Enrico Tassi [Thu, 17 Apr 2008 16:55:36 +0000 (16:55 +0000)]
example:
inductive I : Type :=
| k : \forall A. (A -> I)-> I
match t with
| k _ f => f w (* is smaller than t even if applied! *)
Enrico Tassi [Thu, 17 Apr 2008 16:34:44 +0000 (16:34 +0000)]
added a missing whd
Enrico Tassi [Thu, 17 Apr 2008 16:12:12 +0000 (16:12 +0000)]
new calculation of recursive parameters in guarded by destructors:
inductive I : Type :=
| K : list (pair Type I) -> I
let rec f t on t : I -> bool :=
match t with
| k ((nat, x)::_) -> f x
| k _ -> true
is now accepted. the arg of k used to be recursive but not the head of the list
(only its tail) since constructors types were not specialized on actual left
arguments (and the information that the type of the head contains I was lost).
Enrico Tassi [Thu, 17 Apr 2008 14:39:30 +0000 (14:39 +0000)]
Two similar cases packed together
Enrico Tassi [Thu, 17 Apr 2008 14:30:56 +0000 (14:30 +0000)]
some fixes for guardness conditions
Enrico Tassi [Thu, 17 Apr 2008 14:26:23 +0000 (14:26 +0000)]
is_really_smaller in sync with old kernel, impossible cases removed
Claudio Sacerdoti Coen [Tue, 15 Apr 2008 20:52:43 +0000 (20:52 +0000)]
check_is_really_smaller simplified to consider that it is called only on terms
(immediately put in normal form) that inhabit an inductive type. Moreover,
some duplicated code has been removed.
Claudio Sacerdoti Coen [Tue, 15 Apr 2008 20:10:44 +0000 (20:10 +0000)]
1. bug fixed: the context must be type-checked before using it in type_of_aux'.
Otherwise get_cooked_obj raises Not_found in Deannotate
2. big improvement in guarded_by_destructors: when a fix applied to a safe
argument is found in the body of another fix, the body of the inner fix
is check adding the recusrive formal parameter as an additional safe
argument.
Enrico Tassi [Tue, 15 Apr 2008 13:44:16 +0000 (13:44 +0000)]
get_checked_fix -> get_checked_fixes
Enrico Tassi [Tue, 15 Apr 2008 13:42:39 +0000 (13:42 +0000)]
added comment
Claudio Sacerdoti Coen [Tue, 15 Apr 2008 10:47:29 +0000 (10:47 +0000)]
added sample of guarded by in which coq is stronger
Enrico Tassi [Tue, 15 Apr 2008 08:53:01 +0000 (08:53 +0000)]
positivity check fixed, a MutInd not applied (but with an exp-named-subst)
was considere non strictly positive always
Enrico Tassi [Tue, 15 Apr 2008 08:20:24 +0000 (08:20 +0000)]
do not use an implicit but a sort as a neutral term for positivity check
Enrico Tassi [Mon, 14 Apr 2008 14:59:12 +0000 (14:59 +0000)]
objects are typechecked to ensure there is a graph before doing all the stuff... read: much more memory is required
Enrico Tassi [Mon, 14 Apr 2008 14:48:14 +0000 (14:48 +0000)]
leftno should be increased of the expnamedsubst, but counting only the uris of vars without a body
Enrico Tassi [Mon, 14 Apr 2008 14:47:15 +0000 (14:47 +0000)]
better error message
Enrico Tassi [Mon, 14 Apr 2008 13:21:15 +0000 (13:21 +0000)]
same_obj made more precise, fixed the order of the context for fixpoints body,
cache of fix extended to the mutual case (properly)
Enrico Tassi [Mon, 14 Apr 2008 10:22:14 +0000 (10:22 +0000)]
ficed fixpoint cache usage for mutual fix
Enrico Tassi [Mon, 14 Apr 2008 10:21:33 +0000 (10:21 +0000)]
fixed positivity conditions
Enrico Tassi [Mon, 14 Apr 2008 10:20:39 +0000 (10:20 +0000)]
added mk_fix i j r that given an r of a fix generated another fix on i and j
Enrico Tassi [Mon, 14 Apr 2008 09:58:24 +0000 (09:58 +0000)]
positivity condition was relying on the name declared in abstractions, and
was checking for a dependent product calling does not occurr with a wrong
index
Enrico Tassi [Mon, 14 Apr 2008 09:00:52 +0000 (09:00 +0000)]
added little optimization to not add twice the same arc