aboutsummaryrefslogtreecommitdiff
path: root/tactics
AgeCommit message (Collapse)Author
2014-12-09Switch the few remaining iso-latin-1 files to utf8Pierre Letouzey
2014-12-08This is for documenting and slightly fixing commits 547e97e, c52aea7, 9a34d3e.Hugo Herbelin
As their commit messages suggested it, these commits were not intended to be committed at this time. They are part of a on-going merge of the code of induction and functional induction. Together with the fix here, they are supposingly transparent, semantically speaking.
2014-12-08Constructor tactics backtracking is done using [Tacticals.New] rather than ↵Arnaud Spiwack
[Proofview]. The primitives in [Tacticals] respect Ltac's error level, whereas the one in [Proofview] do not necessarily. In that case the error caught was ignored causing arbitrary error level after [constructor] to be canceled. Needed the addition of an [ORD] variant to [OR] in [Tacticals.New] to avoid unnecessary precomputation (the 'D' stands for 'delay'). Fixes #3838.
2014-12-07Step 4 : atomize_thenHugo Herbelin
2014-12-07Step 2Hugo Herbelin
2014-12-07Step 1Hugo Herbelin
2014-12-07Moving change_in_concl, change_in_hyp, change_concl to Proofview.tactic.Hugo Herbelin
2014-12-07Exporting store of goals so that new_evar in convert, intro, etc. canHugo Herbelin
propagate it. This allows C-zar to continue to work. Don't know if it is the best way to do it.
2014-12-02For compatibility purpose, when setoid_rewriting a hypothesis, beta-iotaPierre-Marie Pédrot
normalize it afterwards.
2014-12-01More invariants in the code of Rewrite.Pierre-Marie Pédrot
In particular, the old hypinfo is made as a proper cache, preventing dynamic tricks to decide whether it was rightful to refresh it.
2014-11-30Continuing a8ad3abc15a2 which actually forgot to ensure freshness in current ↵Hugo Herbelin
env.
2014-11-30Set use_evars_eagerly_in_conv_on_closed_terms in rewrite_unif_flags too.Hugo Herbelin
This allows to have the example in test setoid_unif.v to work again.
2014-11-27Reverting the following block of three commits:Hugo Herbelin
- Registering strict implicit arguments systematically (35fc7d728168) - Experimenting always forcing convertibility on strict implicit arguments (a1a6d7b99eef5e6) - Fixing Coq compilation (894a3d16471) Systematically computing strict implicit arguments can lead to big computations, so I suspend this attempt, waiting for improved computation of implicit arguments, or alternative heuristics going toward having more conversion in rewrite.
2014-11-26Experimenting always forcing convertibility on strict implicit argumentsHugo Herbelin
in tactic unification.
2014-11-25Used an evar name based on the local def name in "evar" tactic.Hugo Herbelin
2014-11-23One more word about "simpl f": avoid "simpl f" to be printed "simpl f",Hugo Herbelin
at least when f is an evaluable reference.
2014-11-23Partly revert commit d9681fb94a3e04a618e58cd09df9cee929170edc aboutHugo Herbelin
when the arguments of a constructor can be moved at the place of the variable on which destruct or induction applies.
2014-11-22Specific printer of Evar.Set.t for ocamldebug + more information inHugo Herbelin
a UserError to ease debugging.
2014-11-22Attempt to organize and document unification flags of setoid rewrite.Hugo Herbelin
2014-11-22In setoid_rewrite error messages:Hugo Herbelin
- removed the encapsulation in a Tactic Failure (I don't see why setoid_rewrite should specifically raise a Fail - do I miss something?) - avoid having twice a "Unable to satisfy ... constraints" message.
2014-11-22Further simplifying functional induction.Hugo Herbelin
2014-11-22Simplifying code of functional induction.Hugo Herbelin
2014-11-22Not using an (arbitrary) pivot anymore for re-introduction ofHugo Herbelin
quantified hypothesis in functional induction. This has apparently no visible effect, probably because functional schemes do not have non-dependent hypothesis in their branches besides induction hypotheses which are anyway introduced at the top of the context.
2014-11-22New simplification of code for generalizing hypotheses in destruct.Hugo Herbelin
2014-11-22Removing a hack which, according to the comment, should not be necessaryHugo Herbelin
anymore since "destruct eq_dec" works like "destruct (eq_dec _ _)".
2014-11-22Fix resolve_morphism to build well-scoped terms in case some argumentsMatthieu Sozeau
of the function are dependent.
2014-11-22Enforcing the non-normalization of evars in Tactics.get_next_hyp_position.Pierre-Marie Pédrot
2014-11-22Writing intro_replacing in the new monad.Pierre-Marie Pédrot
2014-11-22Removing useless flag of the historical move tactic.Pierre-Marie Pédrot
2014-11-21Writing Tactics.keep in the new monad.Pierre-Marie Pédrot
2014-11-20Fixing the previous commit. We had to normalize evars first.Pierre-Marie Pédrot
2014-11-20Somehow fixing a side-effect bug in tactics-in-terms.Pierre-Marie Pédrot
Before this patch, when tactics-in-terms were relying on the ugly environment- modifying primitives such as tclABSTRACT, the returned term was ill-typed because the resulting effects were just dropped. Now we modify the returned term on the fly, effectively getting rid of the effects it may depend on. Yet, this is not completely satisfactory, because the tactic may solve some goals at distance (I would have said by side-effect, but this is ambiguous here). If ever the resulting terms are depending on the side-effects of the tactic, then we are still unsound. This patch should handle most of the use-cases gracefully. To really solve this issue, we should rewrite the pretyper in the new monad, which is easier said than done.
2014-11-20Re-removing the Hiddentac module. For some reason it had been reintroducedPierre-Marie Pédrot
by commit bf0185694.
2014-11-20Global.env chasing in Inv.Pierre-Marie Pédrot
2014-11-20Adding locations to tclZEROMSG.Pierre-Marie Pédrot
2014-11-19Print [uconstr]-s in [idtac] messages.Arnaud Spiwack
2014-11-18Tentative rephrasing of error message for rewrite.Hugo Herbelin
2014-11-18Hopefully the last word on having "simpl f" complying with theHugo Herbelin
semantics described in the reference manual (i.e. if "f" is a qualid, do not add implicit arguments and, a fortiori, do not try to solve these implicit arguments - in particular, changing DbLib which expected this rule not to be followed).
2014-11-16Enforcing a stronger difference between the two syntaxes "simplHugo Herbelin
reference" and "simpl pattern" in the code (maybe we should have merged them instead, but I finally decided to enforce their difference, even if some compatibility is to be preversed - the idea is that at some time "simpl reference" would only call a weak-head simpl (or eventually cbn), leading e.g. to reduce 2+n into S(1+n) rather than S(S(n)) which could be useful for better using induction hypotheses. In the process we also implement the following: - 'simpl "+"' is accepted to reduce all applicative subterms whose head symbol is written "+" (in the toplevel scope); idem for vm_compute and native_compute - 'simpl reference' works even if reference has maximally inserted implicit arguments (this solves the "simpl fst" incompatibility) - compatibility of ltac expressions referring to vm_compute and native_compute with functor application should now work (i.e. vm_compute and native_compute are now taken into account in tacsubst.ml) - for compatibility, "simpl eq" (assuming no maximal implicit args in eq) or "simpl @eq" to mean "simpl (eq _ _)" are still allowed. By the way, is "mul" on nat defined optimally? "3*n" simplifies to "n+(n+(n+0))". Are there some advantages of this compared to have it simplified to "n+n+n" (i.e. to "(n+n)+n").
2014-11-16Fixing side bug in db37c9f3f32ae7 delaying interpretation of theHugo Herbelin
right-hand side of a "change with": the rhs lives in the toplevel environment.
2014-11-14Preserving the good effect of 014e5ac92a on not leaving dangling localHugo Herbelin
definitions while keeping some compatibility on when to generalize when an index also occur in a parameter (effect on PersistentUnionFind for instance).
2014-11-13Removing yet another source of remaining local definitions.Hugo Herbelin
2014-11-11Renouncing to check only at the end of the call to "apply in" theHugo Herbelin
absence of remaining dependent evars when several arguments are given. For simplicity of implementation, checking instead for every step of the n-ary "apply in".
2014-11-10Replugging hints in rewriting strategies.Pierre-Marie Pédrot
2014-11-10Fixing wrongly used tclWITHHOLES in named tactics (continuation of 9fa45b3).Pierre-Marie Pédrot
2014-11-09Fixing bug #3803.Pierre-Marie Pédrot
The Info layer was setting the required evarmap too eagerly, making the tclWITHHOLE tactical accept terms with holes. The logging facility is now inside the tclWITHHOLES.
2014-11-09Removing the unused boolean flag from the move tactic implementation.Pierre-Marie Pédrot
2014-11-09Removing a unused boolean in the TacMove node of tacexpr AST.Pierre-Marie Pédrot
2014-11-09new: Optimize Proof, Optimize HeapEnrico Tassi
- drops all Defined entries from the evar map (applying the subst to the initial evar and the undefined evars types). - call Gc.compact Now the question is: where should these two commands be documented?
2014-11-08Follow up to experimental eager evar unification in bcba6d1bc9:Hugo Herbelin
Observing that systematic eager evar unification makes unification works better, for instance in setoid rewrite (ATBR, SemiRing.v), we add a new flag use_evars_eagerly_in_conv_on_closed_terms which is put to true only in Rewrite.rewrite_core_unif_flags (empirically, this makes the "rewrite" from rewrite.ml working again on examples which were previously treated by use_metas_eagerly_in_conv_on_closed_terms).