aboutsummaryrefslogtreecommitdiffhomepage
path: root/CHANGES
Commit message (Collapse)AuthorAge
* Hopefully the last word on having "simpl f" complying with theGravatar Hugo Herbelin2014-11-18
| | | | | | | 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).
* Fixing detection of occurrences in the presence of nested subterms forGravatar Hugo Herbelin2014-11-18
| | | | "simpl at" and "change at".
* Documenting use of colors in Coq.Gravatar Pierre-Marie Pédrot2014-11-17
|
* Enforcing a stronger difference between the two syntaxes "simplGravatar Hugo Herbelin2014-11-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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").
* Updating CHANGES (evars as ident).Gravatar Hugo Herbelin2014-11-11
|
* American spelling + layout in CHANGES.Gravatar Hugo Herbelin2014-11-11
|
* Fixing careless name confusion in CHANGES.Gravatar Pierre-Marie Pédrot2014-11-04
|
* Documenting the change of semantics of the replace tactic.Gravatar Pierre-Marie Pédrot2014-11-04
|
* Improving elimination with indices, getting rid of intrusive residualGravatar Hugo Herbelin2014-11-02
| | | | local definitions...
* This commit introduces changes in induction and destruct.Gravatar Hugo Herbelin2014-10-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The main change is that selection of subterm is made similar whether the given term is fully applied or not. - The selection of subterm now works as follows depending on whether the "at" is given, of whether the subterm is fully applied or not, and whether there are incompatible subterms matching the pattern. In particular, we have: "at" given | subterm fully applied | | incompatible subterms | | | Y Y - it works like in 8.4 Y N - this was broken in 8.4 ("at" was ineffective and it was finding all subterms syntactically equal to the first one which matches) N Y Y it now finds all subterms like the first one which matches while in 8.4 it used to fail (I hope it is not a too risky in-draft for a semantics we would regret...) (e.g. "destruct (S _)" on goal "S x = S y + S x" now selects the two occurrences of "S x" while it was failing before) N Y N it works like in 8.4 N N - it works like in 8.4, selecting all subterms like the first one which matches - Note that the "historical" semantics, when looking for a subterm, to select all subterms that syntactically match the first subterm to match the pattern (looking from left to right) is now internally called "like first". - Selection of subterms can now find the type by pattern-matching (useful e.g. for "induction (nat_rect _ _ _ _)") - A version of Unification.w_unify w/o any conversion is used for finding the subterm: it could be easily replaced by an other matching algorithm. In particular, "destruct H" now works on a goal such as "H:True -> x<=y |- P y". Secondary change is in the interpretation of terms with existential variables: - When several arguments are given, interpretation is delayed at the time of execution - Because we aim at eventually accepting "edestruct c" with unresolved holes in c, we need the sigma obtained from c to be an extension of the sigma of the tactics, while before, we just type-checked c independently of the sigma of the tactic - Finishing the resolution of evars (using type classes, candidates, pending conversion problems) is made slightly cleaner: it now takes three states: a term is evaluated in state sigma, leading to state sigma' >= sigma, with evars finally solved in state sigma'' >= sigma'; we solve evars in the diff of sigma' and sigma and report the solution in sigma'' - We however renounce to give now a success semantics to "edestruct c" when "c" has unresolved holes, waiting instead for a decision on what to do in the case of a similar eapply (see mail to coqdev). An auxiliary change is that an "in" clause can be attached to each component of a "destruct t, u, v", etc. Incidentally, make_abstraction does not do evar resolution itself any longer.
* Documenting some incompatibilities in (non) Import of ML tactics,Gravatar Hugo Herbelin2014-10-24
|
* Addressing report #3279 (inconsistency of behavior of the -> and <-Gravatar Hugo Herbelin2014-10-24
| | | | | | | | | | | | | | | introduction patterns). Whether we call -> and <- from assert as or apply in as, or as a component of a larger introduction pattern, the new documented semantics is: - behave as subst if an equation rewriting a variable (rewrite in conclusion and hyps and erase variable and hyp). - rewrite in concl if an equation not rewrite a variable or a quantified equality, then erase the hypothesis. This is potential source of incompatibilities.
* CHANGES: makes explicit the incompatibily introduced by the use of ↵Gravatar Arnaud Spiwack2014-10-22
| | | | | Ltac-defined names in term binders. Closes #3747.
* Mentioning incompatibility shown in #3718 and coming from #3050Gravatar Hugo Herbelin2014-10-13
| | | | (interpreting "match goal"'s hypotheses in scope %type).
* Documenting option -type-in-type.Gravatar Hugo Herbelin2014-09-29
|
* Fixing inversion after having fixed intros_replacingGravatar Hugo Herbelin2014-09-10
| | | | | | | in69665dd2480d364162933972de7ffa955eccab4d. There are still situations when "as" is not given where equations coming from injection are not yet removed, making invalid the computation of dependencies, what prevents an hypothesis to be cleared and replaced.
* Documenting the new Undo semanticsGravatar Enrico Tassi2014-09-09
|
* Removing the documentation of the XML plugin.Gravatar Pierre-Marie Pédrot2014-09-08
|
* CHANGES: existential variables are always "substituted" in the new tactic ↵Gravatar Arnaud Spiwack2014-09-08
| | | | engine.
* CHANGES: Ltac's [refine] accepts [uconstr].Gravatar Arnaud Spiwack2014-09-08
|
* CHANGES: [revgoals].Gravatar Arnaud Spiwack2014-09-08
|
* CHANGES: [Variant], [Set Nonrecursive Elimination Schemes].Gravatar Arnaud Spiwack2014-09-08
|
* CHANGES: binder names from Ltac identifiers.Gravatar Arnaud Spiwack2014-09-08
|
* "allows to", like "allowing to", is improperGravatar Jason Gross2014-08-25
| | | | | | | | | | | It's possible that I should have removed more "allows", as many instances of "foo allows to bar" could have been replaced by "foo bars" (e.g., "[Qed] allows to check and save a complete proof term" could be "[Qed] checks and saves a complete proof term"), but not always (e.g., "the optional argument allows to ignore universe polymorphism" should not be "the optional argument ignores universe polymorphism" but "the optional argument allows the caller to instruct Coq to ignore universe polymorphism" or something similar).
* Grammar: "allowing to" is not proper EnglishGravatar Jason Gross2014-08-25
| | | | | | | | | | | I'm not quite sure why, but I'm pretty sure it's not. Rather, in "allowing for foo" and "allowing to foo", "foo" modifies the sense in which someting is allowed, rather than it being "foo" that's allowed. "Allowing fooing" generally works, though it can sound a bit awkward. "Allowing one to foo" (or "Allowing {him,her,it,Coq} to foo") is always acceptable, in-as-much as it's ok to use "one". I haven't touched the older instances of it in the CHANGES file.
* Adding a new intro-pattern for "apply in" on the fly. Using syntaxGravatar Hugo Herbelin2014-08-18
| | | | "pat/term" for "apply term on current_hyp as pat".
* Uncountably many bullets (+,-,*,++,--,**,+++,...).Gravatar Hugo Herbelin2014-08-05
|
* Experimentally adding an option for automatically erasing anGravatar Hugo Herbelin2014-08-05
| | | | | | | | | | hypothesis when using it in apply or rewrite (prefix ">", undocumented), and a modifier to explicitly keep it in induction or destruct (prefix "!", reminiscent of non-linerarity). Also added undocumented option "Set Default Clearing Used Hypotheses" which makes apply and rewrite default to erasing the hypothesis they use (if ever their argument is indeed an hypothesis of the context).
* Adding a syntax "enough" for the variant of "assert" with the order ofGravatar Hugo Herbelin2014-08-05
| | | | subgoals and the role of the "by tac" clause swapped.
* A new step in the new "standard" naming policy for propositional hypothesesGravatar Hugo Herbelin2014-08-05
| | | | | | | | | | | | | obtained from case analysis or induction. Made it under experimental status. This replaces commit bf7d2a3ad2535e7d57db79c17c81aaf67d956965 which was acting at the level of logic.ml. Now acting in tactics.ml. Parts of things to be done about naming (not related to Propositions): induction on H:nat+bool produces hypotheses n and b but destruct on H produces a and b. This is because induction takes the dependent scheme whose names are statically inferred to be a and b while destruct dynamically builds a new scheme.
* CHANGES: [>…].Gravatar Arnaud Spiwack2014-08-01
|
* CHANGES: [numgoals] and [guard].Gravatar Arnaud Spiwack2014-08-01
|
* Making the error message about bullets more precise.Gravatar Pierre Courtieu2014-07-31
| | | | Suggests in some cases the right bullet to use.
* CHANGES: untyped terms in tacticsGravatar Arnaud Spiwack2014-07-29
|
* CHANGES: cycle and swap.Gravatar Arnaud Spiwack2014-07-25
|
* CHANGES: yellow in Coqide.Gravatar Arnaud Spiwack2014-07-25
|
* CHANGE: add Derive.Gravatar Arnaud Spiwack2014-07-25
|
* CHANGE: document the features of the new tactic engine.Gravatar Arnaud Spiwack2014-07-25
|
* Documenting the changes of Locate semantics.Gravatar Pierre-Marie Pédrot2014-07-21
|
* Documenting the need of the "DECLARE PLUGIN" statement.Gravatar Pierre-Marie Pédrot2014-07-21
|
* Documenting the change of semantics of the "constructor" tactic.Gravatar Pierre-Marie Pédrot2014-07-21
|
* Mentioning the incompatibility due to fixing bug #2996 (see #3418).Gravatar Hugo Herbelin2014-07-13
|
* Adding a "time" tactical for benchmarking purposes. In case the tacticGravatar Hugo Herbelin2014-07-13
| | | | backtracks, print time spent in each of successive calls.
* Synchronized names from the "as" clause with the skeleton of theGravatar Hugo Herbelin2014-06-30
| | | | | | elimination scheme in induction/destruct also for those names which correspond to neither the induction hypotheses nor the recursive arguments.
* Updating CHANGES w.r.t. opacity in type inference + layout of file.Gravatar Hugo Herbelin2014-06-28
|
* Add some compatibility notes on the changes to [change] and unification in ↵Gravatar Matthieu Sozeau2014-06-23
| | | | general.
* Use of "H"-based names for propositional hypotheses obtained byGravatar Hugo Herbelin2014-06-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | destruction of schemes in Type such as sumbool. Added an option "Set Standard Proposition Elimination Names" for governing this strategy (activated by default). This provides names supposingly more uniform than before for those who like to have names automatically generated, at least in the first phase of the development process of proofs. Examples: *** Non dependent case *** Goal {True}+{False}-> True. intros [|]. Before: t : True ============================ True and f : False ============================ True After: H : True ============================ True H : False ============================ True *** Dependent case *** Goal forall x:{True}+{False}, x=x. intros [|]. Before: t : True ============================ left t = left t f : False ============================ right f = right f After: HTrue : True ============================ left HTrue = left HTrue HFalse : False ============================ right HFalse = right HFalse
* More on injection over a projectable "existT". - Fixing syntax "injection ↵Gravatar Hugo Herbelin2014-05-31
| | | | ... as ..." which was not working. - Now applying the simplification on any "existT" generated by "injection" (possible source of incompatibilities).
* Restored old behavior of injection on proofs by default.Gravatar Maxime Dénès2014-05-18
| | | | Use Set Injection On Proof to enable the new behavior.
* More documentation of new features in CHANGE.Gravatar Pierre-Marie Pédrot2014-05-09
|