aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel
Commit message (Collapse)AuthorAge
...
* Fix type_of_inductive_knowing_conclusion, relying on an actually broken ↵Gravatar Matthieu Sozeau2014-06-25
| | | | | | | univ_depends. Also add a missing constraint when generating a fresh universe for a template polymorphic inductive in that case.
* Fix handling of side effects in Defined objects (Closes: HoTT#111 + 3344)Gravatar Enrico Tassi2014-06-23
| | | | Every time you use abstract a kitten dies, please stop.
* Less ocaml warnings.Gravatar Hugo Herbelin2014-06-21
|
* Fix computation of inductive level in monomorphism + indices-matter mode.Gravatar Matthieu Sozeau2014-06-20
| | | | Fixes bug #3346.
* Code factorization in LMap.Gravatar Pierre-Marie Pédrot2014-06-18
|
* Fix a destArity that does not exactly match isArity in presence of let-ins.Gravatar Matthieu Sozeau2014-06-17
|
* Removing dead code.Gravatar Pierre-Marie Pédrot2014-06-17
|
* - Fix the de Bruijn problem in check_projection for good :)Gravatar Matthieu Sozeau2014-06-17
| | | | | - Fix HoTT coq bug #80, implicit arguments with primitive projections were wrongly automatically infered.
* Fix a de Bruijn bug in checking code of projections.Gravatar Matthieu Sozeau2014-06-17
|
* Safer entry point of primitive projections in the kernel, now it does recognizeGravatar Matthieu Sozeau2014-06-17
| | | | | | | a projection constant only of the form λ params (r : I params), match r with BuildR args => args_i end, without any other user input and relies on it being typable (no more primitive projections escaping this).
* Preemptively remove files from native compilation.Gravatar Guillaume Melquiond2014-06-16
| | | | | | Ocaml does not remove the .cmi file if compilation fails, thus causing subsequent native compilations to fail due to mismatching interfaces. For the sake of homogeneity, also remove the .cmo/.cmxs file along the way.
* Fixing wrong environment for Meta's in pose_all_metas_as_evars (bug #3284).Gravatar Hugo Herbelin2014-06-13
|
* Code cleaning in Univ.Gravatar Pierre-Marie Pédrot2014-06-12
|
* In generalized rewrite, avoid retyping completely and constantly the ↵Gravatar Matthieu Sozeau2014-06-11
| | | | | | | conclusion, and results of unifying the lemma with subterms. Using Retyping.get_type_of instead results in 3x speedup in Ncring_polynom.
* Fixing Sorting Universes in a world where le and lt constraints may beGravatar Pierre-Marie Pédrot2014-06-10
| | | | redundant in canonical arcs.
* Compute the trace of a universe inconsistency only when explicitly requiredGravatar Pierre-Marie Pédrot2014-06-10
| | | | by the printing options (i.e. when "Print Universes" is set).
* Made explanations for universe inconsistencies optional. They are only usedGravatar Pierre-Marie Pédrot2014-06-10
| | | | by the printer anyway.
* Specialize the type of [Univ.compare_neq] so that it is clear it is only usedGravatar Pierre-Marie Pédrot2014-06-10
| | | | to recover the trace of a universe inconsistency. Changed its name too btw.
* Imperatively check touched universes in compare_neq functions. This ensuresGravatar Pierre-Marie Pédrot2014-06-10
| | | | | | a O(1) check, contrasting with the previous O(n) behaviour that rendered universe constraint checking prohibitive on big files. I expect a 20% speedup on such files.
* - Fix substitution of universes which needlessly hashconsed existing universes.Gravatar Matthieu Sozeau2014-06-10
| | | | - More cleanup. remove unneeded functions in universes
* Oops, one refactoring was not compiled.Gravatar Matthieu Sozeau2014-06-10
|
* More cleanup/reorganizing of univ.ml to separate constraint/universe ↵Gravatar Matthieu Sozeau2014-06-10
| | | | | | handling from the instance/contexts and substitution code.
* Cleanup in Univ, moving code for UniverseConstraints outside the kernel in ↵Gravatar Matthieu Sozeau2014-06-10
| | | | | | | | Universes. Needed to exponse compare_head_gen(_leq) so that it could be reused in Universes. Remove unused functions from univ as well and refactor a little bit. Changed the syntax to Type@{} for explicit universe level specs, following the WG decision.
* Remove unused function in univGravatar Matthieu Sozeau2014-06-10
|
* Flattening Level module structure in Univ.Gravatar Pierre-Marie Pédrot2014-06-09
|
* ind_tables: always declare side effects (Closes: HOTT#110)Gravatar Enrico Tassi2014-06-08
| | | | | | | | | | | | | | | | | | | | | | | | declare takes care of ignoring side effects that are available in the global environment. This is yet another instance of what the "abominion" (aka abstract) can do: the code was checking for the existence in the environment of the elimination principle, and not regenerating it (nor declaring the corresponding side effect) if the elimination principle is used twice. Of course to functionalize the imperative actions on the environment when two proofs generated by abstract use the same elim principle, such elim principle has to be inlined twice, once in each abstracted proof. In other words, a side effect generated by a tactic inside an abstract is *global* but will be made local, si it must always be declared, no matter what. Now the system works like this: - side effects are always declared, even if a caching mechanism thinks the constant is already there (it can be there, no need to regenerate it but the intent to generate it *must* be declared anyhow) - at Qed time, we filter the list of side effects and decide which ones are really needed to be inlined. bottom line: STOP using abstract.
* Function in Univ uselessly exported.Gravatar Pierre-Marie Pédrot2014-06-08
|
* Moving a Thread.yield in check_interrupt.Gravatar Pierre-Marie Pédrot2014-06-07
|
* Adding a new Control file centralizing the control options of Coq.Gravatar Pierre-Marie Pédrot2014-06-07
|
* Make kernel reduction code parametric over the handling of universes,Gravatar Matthieu Sozeau2014-06-06
| | | | | | | | | | | allowing fast conversion to be used during unification while respecting the semantics of unification w.r.t universes. - Inside kernel, checked_conv is used mainly, it just does checking, while infer_conv is used for module subtyping. - Outside, infer_conv is wrapped in Reductionops to register the right constraints in an evarmap. - In univ, add a flag to universes to cache the fact that they are >= Set, the most common constraints, resulting in an 4x speedup in some cases (e.g. HigmanS).
* Dedicated map module for type universes. It uses hashmaps, which areGravatar Pierre-Marie Pédrot2014-06-05
| | | | slightly more efficient than plain balanced maps.
* Removing dead code from Univ.Gravatar Pierre-Marie Pédrot2014-06-05
|
* - Force every universe level to be >= Prop, so one cannot "go under" it anymore.Gravatar Matthieu Sozeau2014-06-04
| | | | - Finish the change to level-to-level substitutions, in the checker.
* - Fix hashing of levels to get the "right" order in universe contexts etc...Gravatar Matthieu Sozeau2014-06-04
| | | | | | | - Add a tentative syntax for specifying universes: Type{"i"} and foo@{Type{"i"},Type{"j"}}. These are always rigid. - Use level-to-level substitutions where the more general level-to-universe substitutions were previously used.
* Fixing incorrect printf format.Gravatar Pierre-Marie Pédrot2014-06-02
|
* - Fix for commit 15999903f875f4b5dbb3d5240d2ca39acc3cd777 which disallowed someGravatar Matthieu Sozeau2014-05-28
| | | | | | cases of Type (* Prop *) <= Set. - Do check types of metavariables at the end of apply's unification, if it failed at the beginning (otherwise universe constraints can be incomplete).
* - Fix in kernel conversion not folding the universe constraintsGravatar Matthieu Sozeau2014-05-26
| | | | | | | | | correctly when comparing stacks. - Disallow Type i <= Prop/Set constraints, that would otherwise allow constraints that make a universe lower than Prop. - Fix stm/lemmas that was pushing constraints to the global context, it is done depending on the constant/variable polymorphic status now. - Adapt generalized rewriting in Type code to these fixes.
* Update infer_conv to record trivial Prop <= Type i constraints that are ↵Gravatar Matthieu Sozeau2014-05-26
| | | | | | needed during unification.
* Fix native_compute for systems with a limited size for the command line.Gravatar Guillaume Melquiond2014-05-22
| | | | | | | | | | | | | | The call to the native compiler can fail due to the sheer amounts of -I options passed to it. Indeed, it is easy to get the command line to exceed 512KB, thus causing various operating systems to reject it. This commit avoids the issue by only passing the -I options that matter for the currently compiled code. Note that, in the worst case, this commit is still not sufficient on Windows (32KB max), but this worst case should be rather uncommon and thus can be ignored for now. For the record, the command-line size mandated by Posix is 4KB.
* Revert "Decent error message when a constant is not found"Gravatar Enrico Tassi2014-05-16
| | | | This reverts commit c4bdf93e358b97b32e0d80d6c7d1b79a2ece1dc2.
* Decent error message when a constant is not foundGravatar Enrico Tassi2014-05-16
|
* Another try at close_proof that should behave better w.r.t. exception handling.Gravatar Matthieu Sozeau2014-05-16
|
* Rewritten the sorting algorithm for universes with a better complexity.Gravatar Pierre-Marie Pédrot2014-05-13
| | | | | | | | This should be now linear instead of the cubic Bellman-Ford algorithm. The new algorithm assumes that the universe graph is a DAG if we remove the {Le, Eq}-cycles, which is the case when the graph is consistent. Luckily we only use the sorting algorithm on such consistent graphs, in the Print Sorted Universes command.
* Using Maps to handle imports in Safe_typing. The order is irrelevant indeed,Gravatar Pierre-Marie Pédrot2014-05-11
| | | | and the lookup operation proved to be costly when dealing with big libraries.
* Reuse universe level substitutions for template polymorphism, fixing performanceGravatar Matthieu Sozeau2014-05-09
| | | | problem with hashconsing at the same time. This fixes bug# 3302.
* Avoid allocations in type_of_inductiveGravatar Matthieu Sozeau2014-05-08
|
* Fast-path equality of sorts in compare_constr*Gravatar Matthieu Sozeau2014-05-08
|
* Add missing case for primitive projection in fold_map.Gravatar Matthieu Sozeau2014-05-06
|
* Fix extraction taking a type in the wrong environment.Gravatar Matthieu Sozeau2014-05-06
| | | | | Fix restriction of universe contexts to not forget about potentially useful constraints.
* Find a more efficient fix for dealing with template universes:Gravatar Matthieu Sozeau2014-05-06
| | | | | | | eagerly solve l <= k constraints as k := l when k is a fresh variable coming from a template type. This has the effect of fixing the variable at the first instantiation of the parameters of template polymorphic inductive and avoiding to generate useless <= constraints that need to be minimized afterwards.