aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2011-11-17Merge fix for bug #2604.msozeau
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14673 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-17Fix bug #2604, wrong error from setoid_rewrite. The rewrite is impossible ↵msozeau
due to dependencies though. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14672 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-17Merge subinstances branch by me and Tom Prince.msozeau
This adds two experimental features to the typeclass implementation: - Path cuts: a way to specify through regular expressions on instance names search pathes that should be avoided (e.g. [proper_flip proper_flip]). Regular expression matching is implemented through naïve derivatives. - Forward hints for subclasses: e.g. [Equivalence -> Reflexive] is no longer applied backwards, but introducing a specific [Equivalence] in the environment register a [Reflexive] hint as well. Currently not backwards-compatible, the next patch will allow to specify direction of subclasses hints. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14671 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-17Was missing a potential application of subtypingmsozeau
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14670 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16Adding postprocessing to remove "commutative cuts" expansions inherbelin
pattern-matching when it turns after typing phase that no dependencies exists. Incidentally, renamed regeneralize_index into relocate_index and make it works both way (to generalize and to ungeneralize). This avoids using replace_tomatch for ungeneralization which does not support modifying the "deps". git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14669 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16Changed the way find_dependencies_signature is working so that itherbelin
applies to terms to match that are not necessarily rel's. Also simplified build_initial_predicate. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14668 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16De Bruijn indices bug in pattern matching compilation in the presenceherbelin
of dependent types. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14667 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16Old generalization bug in pattern-matching: names were considered theherbelin
same in every branches while they should have been adjusted to the names locally used in the branch. Fixing it by remembering an index of the declaration to abstract in the env together with the declaration itself. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14666 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16Fixing bug #1834 (de Bruijn indices bug in pattern-matching compilation).herbelin
(technically, since the signature "tomatch" of terms to match and of terms to generalize is typed in a context that does not consider terms to match as binders while the return predicate do consider them as binders, the adjusment of the context of the "tomatch" to the context of the predicate needs lifting in each missing part of the "tomatch" context, what was not done) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14664 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16Old typing bug in pattern-matching compilation (apparently w/oherbelin
consequences up to now, but maybe because this type is often later on thrown away). git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14663 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16Specialization of tomatch in pattern-matching compilation was done tooherbelin
late for being taken into account in generalized declarations. Do it build_branch as it was for specialization of the predicate. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14661 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16A bit of documentation around cases.ml + ML modules uselessly openherbelin
+ dead code. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14660 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16Completed list of theories targetsherbelin
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14659 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16Suppression fichier Case8.v redondantherbelin
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14658 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16Fixing beautification of "thm_token" (missing space) + improvements.herbelin
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14654 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16Fixing association of wrong "as"-pattern name when expandingherbelin
abbreviations of notations (most of the time inoffensive but has bad effect on compiling pattern-matching in the presence of dependencies). git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14653 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-16Fixing dependencies lifting bug in pattern-matching compilationherbelin
(no actual counterexample, revealed by experiments on more aggressive generalizations over dependent arguments). git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14652 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-14Bug 2637: patches to make slightly easier to write programs that use coq ↵pboutill
code, without the toplevel. by Tom Prince git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14651 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-14Bug 2636 - Move string_of_ppcmds to Pppboutill
by Tom Prince git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14650 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-09Fixed ocamlbuild compilation (Tom Prince)ppedrot
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14649 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-08Refined second_order_matching so that a constraint on whichherbelin
occurrences to abstract can be given. This allows to force "destruct" to necessarily abstract over all occurrences of its main argument (only the sub-arguments that occur in the inductive type of the main argument have their occurrences constrained by typing). This incidentally avoids "rewrite" succeeding in rewriting only a part of the occurrences it has to rewrite. This repairs the failure of RecursiveDefinition which failed after pattern unification fix from r14642). Full support for selecting occurrence of main argument still to be done though. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14648 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-08optimization: memoization for is_open_canonical_projectiongareuselesinge
Assume a pile of constants on the left, and a stuck canonical projection on the right. We are going to unfold the left constants step by step, and at every step, we are going to recheck that the very same projection on the right is stuck. The new check for stuck canonical projections is more expensive, we thus memoize it for the whole sequence of delta steps on the left. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14646 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-08Improved check is_open_canonical_projectiongareuselesinge
The check looks for 1 canonical projection applied to a meta/evar. This fails to deal with telescopes that generate unification problems containing something like "(pi_1 (pi_2 ?))" that is indeed a "stuck" canonical projection but not of the form recognized by the previous implementation. The same holds when pi_2 is a general function not producing a constructor. This patch checks if the argument of the canonical projection weak head reduces to a constructor calling whd_betadeltaiota. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14645 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-07Allow "|_=>_" in "match" in patterns, no more forced enumeration of constructorsletouzey
For instance, consider this inductive type: Inductive Ind := A | B | C | D. For detecting "match" on this type, one was forced earlier to write code in Ltac using "match goal" and/or "context [...]" and long patterns such as: match _ with A => _ | B => _ | C => _ | D => _ end After this patch, this pattern can be shortened in many alternative ways: match _ with A => _ | _ => _ end match _ with B => _ | _ => _ end match _ in Ind with _ => _ end Indeed, if we want to detect a "match" of a given type, we can either leave at least one branch where a constructor is explicit, or use a "in" annotation. Now, we can also detect any "match" regardless of its type: match _ with _ => _ end Note : this will even detect "match" over empty inductive types. Compatibility should be preserved, since "match _ with end" will continue to correspond only to empty inductive types. Internally, the constr_pattern PCase has changed quite a lot, a few elements are now grouped into a case_info_pattern record, while branches are now lists of given sub-patterns. NB: writing "match" with missing last branches in a constr pattern was actually tolerated by Pattern.pattern_of_glob_constr earlier, since the number of constructor per inductive is unknown there. And this was triggering an uncaught exception in a array_fold_left_2 in Matching later. Oups. At least this patch fixes this issue... Btw: the code in Pattern.pattern_of_glob_constr was quadratic in the number of branch in a match pattern. I doubt this was really a problem, but having now linear code instead cannot harm ;-) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14644 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-07Fixed xml-light handling of whitespace not compliant with XML standard: it ↵ppedrot
stripped leading line returns in front of CDATA. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14643 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-06Fixing incorrect change to pattern-unification over Meta's introducedherbelin
in r14199 (June 2011). Meta's implicitly depend on the context they are defined in and this has to be taken into account for checking if occurrences are distinct (in particular, no Var's are allowed as arguments of a pattern-unifiable Meta). The example expected to be accepted thanks to r14199 is not a pattern-unification problem (it has more than one solution) and was anyway already accepted (strange). Compared to before r14199, aliases expansion and restriction of pattern unification check to variables occurring in the right-hand side are however now taken into account. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14642 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-06Fixing tactic remember not correctly checking preservation of typingherbelin
in hypotheses. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14638 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-06Also sprach CoqIDE (in XML)ppedrot
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14637 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-06Fixed nasty bug when empty PCData, confusion no string vs. empty stringppedrot
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14636 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-06More XML marshalling functionsppedrot
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14635 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-06Added XML dependencies into Makefileppedrot
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14634 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-06Partialliy added XML marshalling to ide_intfppedrot
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14633 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-06Added XML manipulation tools to compilation chainppedrot
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14632 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-06Added XML manipulation basics (modified from xml-light)ppedrot
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14631 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-05Added missing printing debug functions in IDE interfaceppedrot
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14630 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-04Auto: removal of ?use_core_db obsolete now that we have nocoreletouzey
Suggestion of Tom Prince, that told me that he has adapted the rippling tactic to use the "nocore" pseudo-database. Since this tactic was the only user of these optional arguments ?use_core_db, let's remove them. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14629 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-03Cleaning a little bit the files talking about descriptions: avoidingherbelin
same name for different statements as noticed by Adam Chlipala on coq-club, avoiding stating the same axiom twice in distinct files. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14628 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-11-02Add type annotations around all calls to Libobject.declare_objectletouzey
These annotations are purely optional, but could be quite helpful when trying to understand the code, and in particular trying to trace which which data-structure may end in the libobject part of a vo. By the way, we performed some code simplifications : - in Library, a part of the REQUIRE objects was unused. - in Declaremods, we removed some checks that were marked as useless, this allows to slightly simplify the stored objects. To investigate someday : in recordops, the RECMETHODS is storing some evar_maps. This is ok for the moment, but might not be in the future (cf previous commit on auto hints). This RECMETHODS was not detected by my earlier tests : not used in the stdlib ? git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14627 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-10-29Added Add LoadPath in coqdep lexer (but not in coqdep itself by lack of time).herbelin
There are preliminary problems to solve in the semantics of -I/-R which differs from the one of coqtop: - in case of ambiguity, internally to -R option, or between two -R/-I options, it is not clear at all that the semantics is as in coqtop (which by the way is not canonical either since it seems to depend on the underlying order of dirs in the file system), - in the presence of -I dir, Require A.b does not look if dir.A.b exists; similarly for Declare ML Module "f", Require "f" and Load "f" when f has a dirname part. I suggest to have a common library for coqdep, coqdoc and coqtop that ensures that -I/-R behave consistently for all tools. Incidentally made coqdep lexer a bit more strict about syntax errors. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14626 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-10-29Fixed broken globalization of identifiers containing utf8 lettersherbelin
without knowing it. Note: location tables have grown a lot, a better representation of the contents of the glob files in coqdoc might improve efficiency. Also added keywords. Information is now obtained from the glob file to know the exact span of identifiers. Kept a class of identifiers (and enriched them) for the main purpose of distinguishing between idents and symbols in the absence of a glob file. Still a lot of work to do in coqdoc to make it more robust... git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14624 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-10-29Added checksums to glob files and warned about possibly missingherbelin
packages for utf8. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14623 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-10-28Remove dynamic stuff from constr_expr and glob_constrglondu
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14621 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-10-27Remove avoidable use of GDynamicglondu
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14620 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-10-26Deactivating second-order pattern-matching in evarconv for 8.4.herbelin
Kept in "destruct" though. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14619 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-10-26Fix configuration box bug in recursive callpboutill
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14618 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-10-26Coq_makefile handles .mlpack filespboutill
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14617 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-10-26Coqdep handles .mlpackpboutill
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14616 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-10-26Checker/subtyping.ml: avoid adding in env a module already there (fix #2609)letouzey
When doing a [check_subtypes env mtb1 mtb2], we used to always add [mtb1] in the environment. But since the stricter checks of commit r14150, this is an error if the environment already knows [mtb1] (for instance when doing (F M) and checking that M is compatible with the type of the arg of F. [check_subtypes] now expect [mtb1] to be already in env, and we move the add_module to the unique call site of this function that requires it. Moreover, we solve a second issue : when subtyping a functor, we update the environment once inside the functor, and this is also refused by the checks of commits r14150. So we first remove the module name from the env before doing the update. Since the module added earlier was a functor, there is no inner defs to chase in env. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14615 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-10-26When checking for emptiness, use Foo.is_empty instead of (=) Foo.emptyletouzey
Here Foo is Univ.constraints, Univ.universes, Evd.evar_map, Evd.Metamap Ok, all these structures are currently ocaml's maps or similar, with a unique empty value, and (=) can be used on them in this particular case. But using Foo.is_empty is safer : it will work even if the underlying representation changes. Example : for spotting non-legitimate use of (=) we might embed a type into a record with a functional field. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14614 85f007b7-540e-0410-9357-904b9bb8a0f7
2011-10-26Environ.set_universes is dead codeletouzey
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14613 85f007b7-540e-0410-9357-904b9bb8a0f7