aboutsummaryrefslogtreecommitdiff
path: root/kernel
AgeCommit message (Collapse)Author
2014-07-22Refine check_is_subterm.Maxime Dénès
Following Bruno's suggestion, we check if the tree expected for the recursive argument is included in the one which is inferred. This check is probably not necessary in the current state of affairs, but might become so after further extensions of the guard condition.
2014-07-22Refined guard condition of cofixpoints, to anticipate potential futurMaxime Dénès
extensions.
2014-07-22First attempt at a fix for guard condition on cofixpoints.Maxime Dénès
2014-07-22Typo in comment.Maxime Dénès
2014-07-22Made intersection on regular trees less intensional.Maxime Dénès
2014-07-22Refining match subterm and commutative cut rules. The parameters that areMaxime Dénès
instantiated in the return predicate are now taken into account. The resulting recargs tree is the intersection between the one of the branches and the appearing in the return predicate. Both the domain and co-domain are filtered.
2014-07-22Tentative fix for the commutative cut subterm rule.Maxime Dénès
Some fixpoints are now rejected in the standard library, but that's probably because we compare trees for equality instead of intersecting them.
2014-07-22Tentative patch for incompatibility between subterm relation and dependentMaxime Dénès
pattern matching. This patch should be improved in two ways: (1) Implement the same checks for the commutative cut subterm rule. (2) When checking safe recursive subterms for each of the branches in a match, instanciated parameters in the return predicate should be taken into account. Step (1) should be enough to restore a correct guard condition, but (2) will be required if we don't want to rule out some legitimate and practical examples.
2014-07-21Universe level maps use HMaps.Pierre-Marie Pédrot
2014-07-21Cleanup substitution inside universe instances, only done through subst_fn now,Matthieu Sozeau
and disable hashconsing of substituted instances which had a huge performance penalty in general. They are hashconsed when put in the environment only now.
2014-07-21Cleanup code for constant equality in kernel conversion.Matthieu Sozeau
2014-07-20Use kernel conversion on terms that contain universe variables during ↵Matthieu Sozeau
unification, speeding it up considerably Revert backwards-incompatible commit 77df7b1283940d979d3e14893d151bc544f41410
2014-07-11Properly add a Set lower bound on any polymorphic inductive in Type withMatthieu Sozeau
more than one constructor.
2014-07-10Overlooked to remove a change in kernel/closure that made reducing underMatthieu Sozeau
a primitive projection impossible.
2014-07-09Fixing the previous patch to keep transparent states in sync.Pierre-Marie Pédrot
2014-07-09Recovering transparent state from kernel oracles in constant time.Pierre-Marie Pédrot
2014-07-07In dest_prod_assum, allow non-toplevel let-reductions (fixes a bug found in ↵Matthieu Sozeau
MathClasses).
2014-07-03Cleanup code related to the constraint solving, which sits now outside theMatthieu Sozeau
kernel in library/universes.ml.
2014-07-03Properly compute the transitive closure of the system of constraintsMatthieu Sozeau
generated by a mutual inductive definition (bug found in CFGV). Actually this code can move out of the kernel.
2014-07-03Fix eta expansion of primitive records (HoTT bug #78), which now fails ↵Matthieu Sozeau
cleanly when called on partially applied constructors. Also protect evar_conv from that case.
2014-07-01Add toplevel commands to declare global universes and constraints.Matthieu Sozeau
2014-06-28Quickly fixing bug #2996: typing functions now check when referring toHugo Herbelin
a global reference that the current (goal) env contains all the section variables that the global reference expects to be present. Note that the test for inclusion might be costly: everytime a conversion happens in a section variable copied in a goal, this conversion has to be redone when referring to a constant dependent on this section variable. It is unclear to me whether we should not instead give global names to section variables so that they exist even if they are not listed in the context of the current goal. Here are two examples which are still problematic: Section A. Let B := True : Type. Definition C := eq_refl : B = True. Theorem D : Type. clearbody B. set (x := C). unfold C in x. (* inconsistent context *) or Section A. Let B : Type. exact True. Qed. Definition C := eq_refl : B = True. (* Note that this violated the Qed. *) Theorem D : Type. set (x := C). unfold C in x. (* inconsistent context *)
2014-06-25all coqide specific files moved into ide/Enrico Tassi
lib/interface split into: - lib/feedback subscribe-based feedback bus (also used by coqidetop) - ide/interface definition of coqide protocol messages lib/pp structured info/err/warn messages lib/serialize split into: - lib/serialize generic xml serialization (list, pairs, int, loc, ...) used by coqide but potentially useful to other interfaces - ide/xmlprotocol serialization of protocol messages as in ide/interface the only drawback is that coqidetop needs -thread and I had to pass that option to all files in ide/
2014-06-25Fix type_of_inductive_knowing_conclusion, relying on an actually broken ↵Matthieu Sozeau
univ_depends. Also add a missing constraint when generating a fresh universe for a template polymorphic inductive in that case.
2014-06-23Fix handling of side effects in Defined objects (Closes: HoTT#111 + 3344)Enrico Tassi
Every time you use abstract a kitten dies, please stop.
2014-06-21Less ocaml warnings.Hugo Herbelin
2014-06-20Fix computation of inductive level in monomorphism + indices-matter mode.Matthieu Sozeau
Fixes bug #3346.
2014-06-18Code factorization in LMap.Pierre-Marie Pédrot
2014-06-17Fix a destArity that does not exactly match isArity in presence of let-ins.Matthieu Sozeau
2014-06-17Removing dead code.Pierre-Marie Pédrot
2014-06-17- Fix the de Bruijn problem in check_projection for good :)Matthieu Sozeau
- Fix HoTT coq bug #80, implicit arguments with primitive projections were wrongly automatically infered.
2014-06-17Fix a de Bruijn bug in checking code of projections.Matthieu Sozeau
2014-06-17Safer entry point of primitive projections in the kernel, now it does recognizeMatthieu Sozeau
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).
2014-06-16Preemptively remove files from native compilation.Guillaume Melquiond
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.
2014-06-13Fixing wrong environment for Meta's in pose_all_metas_as_evars (bug #3284).Hugo Herbelin
2014-06-12Code cleaning in Univ.Pierre-Marie Pédrot
2014-06-11In generalized rewrite, avoid retyping completely and constantly the ↵Matthieu Sozeau
conclusion, and results of unifying the lemma with subterms. Using Retyping.get_type_of instead results in 3x speedup in Ncring_polynom.
2014-06-10Fixing Sorting Universes in a world where le and lt constraints may bePierre-Marie Pédrot
redundant in canonical arcs.
2014-06-10Compute the trace of a universe inconsistency only when explicitly requiredPierre-Marie Pédrot
by the printing options (i.e. when "Print Universes" is set).
2014-06-10Made explanations for universe inconsistencies optional. They are only usedPierre-Marie Pédrot
by the printer anyway.
2014-06-10Specialize the type of [Univ.compare_neq] so that it is clear it is only usedPierre-Marie Pédrot
to recover the trace of a universe inconsistency. Changed its name too btw.
2014-06-10Imperatively check touched universes in compare_neq functions. This ensuresPierre-Marie Pédrot
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.
2014-06-10- Fix substitution of universes which needlessly hashconsed existing universes.Matthieu Sozeau
- More cleanup. remove unneeded functions in universes
2014-06-10Oops, one refactoring was not compiled.Matthieu Sozeau
2014-06-10More cleanup/reorganizing of univ.ml to separate constraint/universe ↵Matthieu Sozeau
handling from the instance/contexts and substitution code.
2014-06-10Cleanup in Univ, moving code for UniverseConstraints outside the kernel in ↵Matthieu Sozeau
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.
2014-06-10Remove unused function in univMatthieu Sozeau
2014-06-09Flattening Level module structure in Univ.Pierre-Marie Pédrot
2014-06-08ind_tables: always declare side effects (Closes: HOTT#110)Enrico Tassi
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.
2014-06-08Function in Univ uselessly exported.Pierre-Marie Pédrot