aboutsummaryrefslogtreecommitdiffhomepage
path: root/ltac
Commit message (Collapse)AuthorAge
* Fix handling of only_classes at toplevelGravatar Matthieu Sozeau2016-11-03
|
* Fix Typeclasses eauto := bfs.Gravatar Matthieu Sozeau2016-11-03
|
* Lets Hints/Instances take an optional patternGravatar Matthieu Sozeau2016-11-03
| | | | | | | | | In addition to a priority, cleanup the interfaces for passing this information as well. The pattern, if given, takes priority over the inferred one. We only allow Existing Instances gr ... gr | pri. for now, without pattern, as before. Make the API compatible to 8.5 as well.
* Fixing #5164 (regression in locating error in argument of "refine").Gravatar Hugo Herbelin2016-10-29
| | | | | | Reporting location was not expecting a term passed to an ML tactic to be interpreted by the ML tactic itself. Made an empirical fix to report about the as-precise-as-possible location available.
* Merge branch 'v8.5' into v8.6Gravatar Hugo Herbelin2016-10-22
|
* Revert 214b9ab7969fae71dcf553c399cb1674e463d0e3Gravatar Matthieu Sozeau2016-10-21
| | | | | | This makes [refine] typecheck the term only once (instead of twice), (Qed excluded of course). Fix test-suite file for output of constraints accordingly.
* Merge branch 'bug5036' into v8.6Gravatar Matthieu Sozeau2016-10-20
|\
| * Fix bug #5036 autorewrite, sections and universesGravatar Matthieu Sozeau2016-10-20
| | | | | | | | | | | | Universe context not properly declared. Improve API and code in declare.ml to allow declaration of universe contexts, used by declaration of universes and constraints (separately).
* | Fix bug #5116: [Print Ltac] should be able to print strategies.Gravatar Pierre-Marie Pédrot2016-10-12
| |
* | Fix bug #5098: Symmetry broken in HoTT.Gravatar Pierre-Marie Pédrot2016-10-08
| | | | | | | | | | | | | | We defactorize the in_clause grammar entry to allow parsing of the "symmetry" tactic when it has no arguments. Beforehand, the clause_dft_concl entry accepted the empty stream, preventing the definition of symmetry as a mere identifier.
* | LtacProf cutoff is for total percent, not timeGravatar Jason Gross2016-09-29
| |
* | Merge branch 'bug5036' into v8.6Gravatar Matthieu Sozeau2016-09-29
|\ \
| * | Fix bug #5036 autorewrite, sections and universesGravatar Matthieu Sozeau2016-09-29
| |/ | | | | | | | | | | Universe context not properly declared. Improve API and code in declare.ml to allow declaration of universe contexts, used by declaration of universes and constraints (separately).
* / -profile-ltac-cutoff alike Show Ltac Profile Cutoff (#5100)Gravatar Enrico Tassi2016-09-29
|/ | | | | With this command line flag one can profile ltac in files /and/ trim the results without actually touching the files.
* Merge remote-tracking branch 'github/pr/232' into v8.6Gravatar Maxime Dénès2016-09-28
|\ | | | | | | Was PR#232: Fix the parsing of goal selectors.
* | LtacProf: "Show Ltac Profile CutOff $N" (fix #5080)Gravatar Enrico Tassi2016-09-27
| | | | | | | | | | It seems we have no grammar rule that parses floats, so I'm parsing an integer, but the whole machinery supports floats.
* | Fix bug #5093: typeclasses eauto depth arg does not accept a var.Gravatar Pierre-Marie Pédrot2016-09-26
| |
* | Continuing fix to #5078, taking also into account intropatterns.Gravatar Hugo Herbelin2016-09-15
| | | | | | | | Getting closer from before when the bug was introduced + test.
* | Fixing #5078 (wrong detection of evaluable local hypotheses).Gravatar Hugo Herbelin2016-09-13
| |
* | LtacProp: fix reset_profile (fix #5079)Gravatar Enrico Tassi2016-09-13
| |
* | Fix newlines in printout of LtacProfGravatar Jason Gross2016-09-11
| | | | | | | | Previously, newlines were missing if a node had no children.
* | Revert the LtacProf tactic table headerGravatar Jason Gross2016-09-11
| | | | | | | | This removes a space (making the final letter of the right-aligned columns line come right before the vertical separators, rather than overlapping them), and left-aligns "tactic", as it was in Tobias' original code, which I think is easier to read. (This way, the alignment of the headers matches the alignment of the entries.)
* | Fix bug #3920 for good after 44ada64.Gravatar Pierre-Marie Pédrot2016-09-09
| | | | | | | | | | | | The previous commit did not apply the beta reduction for compatibility on the correct goal. We rather apply it on the first generated subgoal. This fixes the ergo contrib.
* | Removing useless tactic compatibility layer in Rewrite.Gravatar Pierre-Marie Pédrot2016-09-07
| |
* | ltacprof: rec-calls are coaleshedGravatar Enrico Tassi2016-09-07
| |
* | profile_ltac: rewritten to be purely functional and STM awareGravatar Enrico Tassi2016-09-05
| | | | | | | | | | | | | | Changes: - data structures are purely functional (so retracting do work) - profiling data flows towards master using the feedback bus - master aggregates the data on printing
* | Moving log of "TacReduce"/"reduce" to Tactics.reduce so that internalGravatar Hugo Herbelin2016-09-01
| | | | | | | | | | calls are logged too. Using appropriate printer for reparsability of the output.
* | Fix bug #4893: not_evar: unexpected failure in 8.5pl1.Gravatar Pierre-Marie Pédrot2016-08-30
| |
* | Fix bug #3920: eapply masks an hypothesis name.Gravatar Pierre-Marie Pédrot2016-08-30
| | | | | | | | | | | | The problem came from the fact that the legacy beta-reduction occurring after a rewrite was wrongly applied to the side-conditions of the rewriting step. We restrict it to the correct goal in this patch.
* | Fix bug #4914: LtacProf printout has too many newlines.Gravatar Pierre-Marie Pédrot2016-08-23
| |
* | Moving Taccoerce to ltac/ folder.Gravatar Pierre-Marie Pédrot2016-08-19
| | | | | | | | | | This was an overlook. There was no reason to let it in the tactics/ folder, as is was semantically part of the Ltac implementation.
* | Merge remote-tracking branch 'github/bug4188' into v8.6Gravatar Matthieu Sozeau2016-08-18
|\ \
* | | Fix bug #4939: LtacProf prints tactic notations weirdly.Gravatar Pierre-Marie Pédrot2016-08-18
| | |
| * | Fix setoid_rewrite to raise proper errorsGravatar Matthieu Sozeau2016-08-17
|/ / | | | | | | | | when the rewrite lemma doesn't typecheck or does not correspond to a relation.
* | Merge branch 'v8.5' into v8.6Gravatar Pierre-Marie Pédrot2016-08-16
| |
* | Merge remote-tracking branch 'gforge/v8.5' into v8.6Gravatar Matthieu Sozeau2016-07-29
| |
* | Fix bug #4679, weakened setoid_rewrite unificationGravatar Matthieu Sozeau2016-07-21
| | | | | | | | | | It should use evar instantiations eagerly during unification of the lhs of the lemma, as in 8.4.
* | Revert "Revert "Improve the interpretation scope of arguments of an ltac ↵Gravatar Maxime Dénès2016-07-04
| | | | | | | | | | | | | | | | match."" We apply this patch to trunk so that it is integrated in 8.6. This reverts commit 0eb08b70f0c576e58912c1fc3ef74f387ad465be.
* | Merge branch 'v8.5' into trunkGravatar Maxime Dénès2016-07-04
| |
* | rename toplevel/cerror.ml into explainErr.ml (too close to the new ↵Gravatar Pierre Letouzey2016-07-03
| | | | | | | | lib/cErrors.ml)
* | closure.ml renamed into cClosure.ml (avoid clash with a compiler-libs module)Gravatar Pierre Letouzey2016-07-03
| | | | | | | | For the moment, there is a Closure module in compiler-libs/ocamloptcomp.cm(x)a
* | errors.ml renamed into cErrors.ml (avoid clash with an OCaml compiler-lib ↵Gravatar Pierre Letouzey2016-07-03
| | | | | | | | | | | | module) For the moment, there is an Error module in compilers-lib/ocamlbytecomp.cm(x)a
* | Separate flags for fix/cofix/match reduction and clean reduction function names.Gravatar Maxime Dénès2016-07-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a reimplementation of Hugo's PR#117. We are trying to address the problem that the name of some reduction functions was not saying what they were doing (e.g. whd_betadeltaiota was doing let-in reduction). Like PR#117, we are careful that no function changed semantics without changing the names. Porting existing ML code should be a matter of renamings a few function calls. Also, we introduce more precise reduction flags fMATCH, fFIX, fCOFIX collectively denominated iota. We renamed the following functions: Closure.betadeltaiota -> Closure.all Closure.betadeltaiotanolet -> Closure.allnolet Reductionops.beta -> Closure.beta Reductionops.zeta -> Closure.zeta Reductionops.betaiota -> Closure.betaiota Reductionops.betaiotazeta -> Closure.betaiotazeta Reductionops.delta -> Closure.delta Reductionops.betalet -> Closure.betazeta Reductionops.betadelta -> Closure.betadeltazeta Reductionops.betadeltaiota -> Closure.all Reductionops.betadeltaiotanolet -> Closure.allnolet Closure.no_red -> Closure.nored Reductionops.nored -> Closure.nored Reductionops.nf_betadeltaiota -> Reductionops.nf_all Reductionops.whd_betadelta -> Reductionops.whd_betadeltazeta Reductionops.whd_betadeltaiota -> Reductionops.whd_all Reductionops.whd_betadeltaiota_nolet -> Reductionops.whd_allnolet Reductionops.whd_betadelta_stack -> Reductionops.whd_betadeltazeta_stack Reductionops.whd_betadeltaiota_stack -> Reductionops.whd_all_stack Reductionops.whd_betadeltaiota_nolet_stack -> Reductionops.whd_allnolet_stack Reductionops.whd_betadelta_state -> Reductionops.whd_betadeltazeta_state Reductionops.whd_betadeltaiota_state -> Reductionops.whd_all_state Reductionops.whd_betadeltaiota_nolet_state -> Reductionops.whd_allnolet_state Reductionops.whd_eta -> Reductionops.shrink_eta Tacmach.pf_whd_betadeltaiota -> Tacmach.pf_whd_all Tacmach.New.pf_whd_betadeltaiota -> Tacmach.New.pf_whd_all And removed the following ones: Reductionops.whd_betaetalet Reductionops.whd_betaetalet_stack Reductionops.whd_betaetalet_state Reductionops.whd_betadeltaeta_stack Reductionops.whd_betadeltaeta_state Reductionops.whd_betadeltaeta Reductionops.whd_betadeltaiotaeta_stack Reductionops.whd_betadeltaiotaeta_state Reductionops.whd_betadeltaiotaeta They were unused and having some reduction functions perform eta is confusing as whd_all and nf_all don't do it.
| * Goal selectors now use the keyword [only].Gravatar Cyprien Mangin2016-06-30
|/ | | | | This fixes some parsing problems when doing things like [let n := 2 in idtac n]. See bug #4877.
* A new infrastructure for warnings.Gravatar Maxime Dénès2016-06-29
| | | | | | | | | | | | | | | | | | | | | | | | | | On the user side, coqtop and coqc take a list of warning names or categories after -w. No prefix means activate the warning, a "-" prefix means deactivate it, and "+" means turn the warning into an error. Special categories include "all", and "default" which contains the warnings enabled by default. We also provide a vernacular Set Warnings which takes the same flags as argument. Note that coqc now prints warnings. The name and category of a warning are printed with the warning itself. On the developer side, Feedback.msg_warning is still accessible, but the recommended way to print a warning is in two steps: 1) create it by: let warn_my_warning = CWarnings.create ~name:"my-warning" ~category:"my-category" (fun args -> Pp.strbrk ...) 2) print it by: warn_my_warning args
* LtacProf reports structured results (pr/209)Gravatar CJ Bell2016-06-20
| | | | using a custom feedback message in response to "Show Ltac Profile."
* Do not evar-normalize goals when interpreting some hardwired genargs.Gravatar Pierre-Marie Pédrot2016-06-20
|
* Backporting c064fb933 from 8.5 (another regression with Ltac trace report).Gravatar Hugo Herbelin2016-06-18
| | | | Doing it explicitly because it is in another file.
* Adding an "as" clause to specialize.Gravatar Hugo Herbelin2016-06-18
| | | | | | | | | | | | | | | | | | | | | | | | Comments -------- - The tactic specialize conveys a somehow intuitive reasoning concept and I would support continuing maintaining it even if the design comes in my opinion with some oddities. (Note that the experience of MathComp and SSReflect also suggests that specialize is an interesting concept in itself). There are two variants to specialize: - specialize (H args) with H an hypothesis looks natural: we specialize H with extra arguments and the "as pattern" clause comes naturally as an extension of it, destructuring the result using the pattern. - specialize term with bindings makes the choice of fully applying the term filling missing expressions with bindings and to then behave as generalize. Wouldn't we like a more fine-grained approach and the result to remain in the context? In this second case, the "as" clause works as if the term were posed in the context with "pose proof".
* Giving a more natural semantics to injection by default.Gravatar Hugo Herbelin2016-06-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were three versions of injection: 1. "injection term" without "as" clause: was leaving hypotheses on the goal in reverse order 2. "injection term as ipat", first version: was introduction hypotheses using ipat in reverse order without checking that the number of ipat was the size of the injection (activated with "Unset Injection L2R Pattern Order") 3. "injection term as ipat", second version: was introduction hypotheses using ipat in left-to-right order checking that the number of ipat was the size of the injection and clearing the injecting term by default if an hypothesis (activated with "Set Injection L2R Pattern Order", default one from 8.5) There is now: 4. "injection term" without "as" clause, new version: introducing the components of the injection in the context in left-to-right order using default intro-patterns "?" and clearing the injecting term by default if an hypothesis (activated with "Set Structural Injection") The new versions 3. and 4. are the "expected" ones in the sense that they have the following good properties: - introduction in the context is in the natural left-to-right order - "injection" behaves the same with and without "as", always introducing the hypotheses in the goal what corresponds to the natural expectation as the changes I made in the proof scripts for adaptation confirm - clear the "injection" hypothesis when an hypothesis which is the natural expectation as the changes I made in the proof scripts for adaptation confirm The compatibility can be preserved by "Unset Structural Injection" or by calling "simple injection". The flag is currently off.