aboutsummaryrefslogtreecommitdiff
path: root/tactics
AgeCommit message (Collapse)Author
2014-06-07Adding a new Control file centralizing the control options of Coq.Pierre-Marie Pédrot
2014-06-06Preserve compatibility on examples such as "intros []." on goals suchHugo Herbelin
as "forall x:nat*nat, x=x", which resulted in "forall n n0 : nat, (n, n0) = (n, n0)" before commit 37f68259ab0a33c3b5b41de70b08422d9bcd3bec on "Fixing introduction patterns * and ** ".
2014-06-06Fixes the lost evars when interpreting a change with pattern tactic.Arnaud Spiwack
2014-06-06Moving the [split] tactic out of the AST.Pierre-Marie Pédrot
2014-06-04Collecting in Namegen those conventional default names that are used in ↵Hugo Herbelin
different places
2014-06-04- Fix hashing of levels to get the "right" order in universe contexts etc...Matthieu Sozeau
- 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.
2014-06-03The tactic interpreter now uses a new type of tactics, throughPierre-Marie Pédrot
the GTac module. A ['a Gtac.t] is a special case of tactic that may depend on the current goals, or not. Internally, it construct a list of results, one for each focussed goal, if the tactic is actually dependent. This allows for an interpretation of whole-goal tactic that does work, which was not the case for the previous implementation, which did to many Proofview.Goal.enter.
2014-06-02Removing symmetry from the atomic tactics.Pierre-Marie Pédrot
2014-05-31More on injection over a projectable "existT". - Fixing syntax "injection ↵Hugo Herbelin
... as ..." which was not working. - Now applying the simplification on any "existT" generated by "injection" (possible source of incompatibilities).
2014-05-31Fixing introduction patterns * and ** when used in a branch so that they do ↵Hugo Herbelin
not introduce beyond what is under control of the branch. See test-suite intros.v for an example.
2014-05-31Upgrade Matthieu's new_revert as the "revert" (a "unit tactic").Hugo Herbelin
2014-05-27Removing a tclSENSITIVE from rewrite.Pierre-Marie Pédrot
2014-05-26- Fix in kernel conversion not folding the universe constraintsMatthieu Sozeau
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.
2014-05-24Revert "Chasing the goal entering backward while interpreting tactics. This ↵Pierre-Marie Pédrot
required" I tested the commit on the wrong branch... This reverts commit b0364eff4ec8ad5676060d8ca9cdbbb1d9c34d04.
2014-05-24Chasing the goal entering backward while interpreting tactics. This requiredPierre-Marie Pédrot
writing a new primitive recovering the first goal under focus. It sounds a bit hackish, but it does actually work.
2014-05-22Moving the "specialize" tactic out of the AST. Also removed an obsoletePierre-Marie Pédrot
variant of it, accepting an additional integer.
2014-05-22Removing useless use of metaids in tactic AST.Pierre-Marie Pédrot
2014-05-21Removing decompose record / sum from the tactic AST.Pierre-Marie Pédrot
2014-05-21Allowing Ltac definitions that may be unusable because of a built-inPierre-Marie Pédrot
parsing rule.
2014-05-21Moving left & right tactics out of the AST.Pierre-Marie Pédrot
2014-05-20Moving (e)transitivity out of the AST.Pierre-Marie Pédrot
2014-05-20Tactics declared through TACTIC EXTEND that are of the formPierre-Marie Pédrot
"foobar" constr(x1) ... constr(xn) are now defined as pure Ltac definitions, and do not add grammar nor printing rules. This partially relies on a hack consisting in retrieving the arguments in the tactic environment rather than as directly passed to the TacExtend node.
2014-05-20Tentative to add constr-using primitive tactics without grammar rules.Pierre-Marie Pédrot
We eta-expand primitive Ltac functions, and instead of feeding TacExtend directly with its arguments, we use the environment to retrieve them. Some tactics from the AST were also moved away and made using this mechanism.
2014-05-18When discrimination is not possible, try to project.Maxime Dénès
Example: Inductive Pnat : Prop := O | S : Pnat -> Pnat. Variable m n : Pnat. Goal S (S O) = S O -> False. intros H; injection H. now deduces S O = O instead of failing with an error message.
2014-05-18Suggest Set Injection On Proofs in error message for injection.Maxime Dénès
2014-05-18Restored old behavior of injection on proofs by default.Maxime Dénès
Use Set Injection On Proof to enable the new behavior.
2014-05-16Moving argument-free tactics out of the AST into a dedicatedPierre-Marie Pédrot
"coretactics.ml4" file.
2014-05-15poly: remove unused attribute to STM nodes and vernac classificaitonEnrico Tassi
2014-05-12Now parsing rules of ML-declared tactics are only made available after thePierre-Marie Pédrot
corresponding Declare ML Module command. This changes essentially two things: 1. ML plugins are forced to use the DECLARE PLUGIN statement before any TACTIC EXTEND statement. The plugin name must be exactly the string passed to the Declare ML Module command. 2. ML tactics are only made available after the Coq module that does the corresponding Declare ML Module is imported. This may break a few things, as it already broke quite some uses of omega in the stdlib.
2014-05-09Code cleaning & factorizing functions in Equality.Pierre-Marie Pédrot
2014-05-09Update and start testing rewrite-in-type code.Matthieu Sozeau
2014-05-09Refresh universes for Ltac's type_of, as the term can be used anywhere,Matthieu Sozeau
fixing two opened bugs from HoTT/coq.
2014-05-08Encapsulating some clausenv uses. This simplifies the control flow of somePierre-Marie Pédrot
tactics.
2014-05-08Revert "Avoid "revert" to retype-check the goal, and move it to a "new" tactic."Hugo Herbelin
(made push command with wrong local ref; leaving control to Matthieu on new revert) This reverts commit b797ba85b7b0f82d66af5629ccf6f75d90dda99a.
2014-05-08Avoid "revert" to retype-check the goal, and move it to a "new" tactic.Hugo Herbelin
2014-05-08Isolating a function "make_abstraction", new name of "letin_abstract",Hugo Herbelin
which compute an abstraction of the goal over a term or a pattern.
2014-05-08Simplification and improvement of "subst x" in such a way that itHugo Herbelin
works in the presence of local definitions referring to x and dependent in other hyps or concl.
2014-05-08Renaming new_induct -> induction; new_destruct -> destruct.Hugo Herbelin
2014-05-08Little reorganization of generalize tactics code w/o semantic changes.Hugo Herbelin
Also removing trailing spaces.
2014-05-08- Add a primitive tclEVARUNIVERSECONTEXT to reset the universe context of an ↵Matthieu Sozeau
evar_map in tactics, avoiding useless and potentially costly merge's of constraints. - Implement revert and generalize using the new tactics (not bound to syntax though, as they are not backwards-compatible yet).
2014-05-08Moving Dnet-related code to tactics/.Pierre-Marie Pédrot
2014-05-08Code cleaning in Tacinterp: factorizing some uses of tclEVARS.Pierre-Marie Pédrot
2014-05-06Cleanup before merge with the trunkMatthieu Sozeau
2014-05-06Use new tactic combinators in tclABSTRACT, to avoid blowup when using ↵Matthieu Sozeau
V82.tactic (tclEVARS _). Again, performance is back to normal. Remove reintroduced try .. with _ -> in raw_enter's.
2014-05-06- Fix treatment of global universe constraints which should be passed alongMatthieu Sozeau
in the Evd of proofs (Evd.from_env). - Allow to set the Store.t value of new evars, e.g. to set constraint evars as unresolvable in rewrite.ml. - Fix a HUGE performance problem in the processing of constraints, which was remerging all the previous constraints with the ambient global universes at each new constraint addition. Performance is now back to (or better than) normal.
2014-05-06Avoid u+k <= v constraints, don't take the sup of an algebraic universe duringMatthieu Sozeau
minimization.
2014-05-06- Fix arity handling in retyping (de Bruijn bug!)Matthieu Sozeau
- Enforce that no u <= Prop/Set can be added for u introduced by the user in Evd.process_constraints. (Needs to be enforced in the kernel as well, but that's the main entry point). - Fix a test-suite script and remove a regression comment, it's just as before now.
2014-05-06- Fix eq_constr_universes restricted to Sorts.equalMatthieu Sozeau
- Fix passing of universe contexts through definitions/proofs, abstract is ok now, even in presence of polymorphism - Correctly mark unresolvable the evars made by the Simple abstraction.
2014-05-06Fixes after rebase. The use of pf_constr_of_global is problematic in ↵Matthieu Sozeau
presence of side-effects...
2014-05-06- Fix bug preventing apply from unfolding Fixpoints.Matthieu Sozeau
- Remove Universe Polymorphism flags everywhere. - Properly infer, discharge template arities and fix substitution inside them (kernel code to check for correctness). - Fix tactics that were supposing universe polymorphic constants/inductives to be parametric on that status. Required to make interp_constr* return the whole evar universe context now. - Fix the univ/level/instance hashconsing to respect the fact that marshalling doesn't preserve sharing, sadly losing most of its benefits. Short-term solution is to add hashes to these for faster comparison, longer term requires rewriting all serialization code. Conflicts: kernel/univ.ml tactics/tactics.ml theories/Logic/EqdepFacts.v