aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* Small cleaning and uniformization in unification flags:Gravatar Hugo Herbelin2014-12-05
| | | | | | | | | | - new function set_flags_for_type for setting flags when converting types of the terms to unify - it now sets all conversion flags, possibly restricting delta using modulo_delta_types - it is now used in w_unify_core_0 too - fixing/improving documentation of options - deprecating "Set Tactic Evars Pattern Unification"
* Improving error message when one instance-hole is not found.Gravatar Hugo Herbelin2014-12-04
| | | | | | | | Still to do: - Decide between using SeveralInstancesFound or raising an error when multiple instances exist. - Use a proper printer for evars instead of the debugging pr_evar_map_filter printer in pr_constraints.
* New approach to deal with evar-evar unification problems in differentGravatar Hugo Herbelin2014-12-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | types: we downcast the evar in the higher type to the lower type. Then, we have the freedom to choose the order of instantiation according to the instances of the evars (e.g. choosing the instantiation for which pattern-unification is possible, if ever it is possible in only one way - as shown by an example in contribution Paco). This still does not preserve compatibility because it happens that type classes resolution is crucially dependent on the order of presentation of the ?n=?p problems. Consider e.g. an example taken from Containers. Both now and before e2fa65fccb9, one has this asymmetry: Context `{Helt : OrderedType elt}. Check forall x y r l h, @Equivalence.equiv _ _ _ x y -> In x (Node l x r h). --> @Equivalence.equiv QArith_base.Q QArith_base.Qeq QArith_base.Q_Setoid x y Context `{Helt : OrderedType elt}. Check forall x y r l h, In x (Node l x r h) -> @Equivalence.equiv _ _ _ x y. --> @Equivalence.equiv elt (@_eq elt Helt) (@OT_Equivalence elt Helt) Then, embedding this example within a bigger one which relies on the ?n=?n' resolution order, one can get two incompatible resolution of the same problem. To be continued...
* Take benefit of improved name preservation of evars in e2fa65fcc.Gravatar Hugo Herbelin2014-12-04
|
* Trying a new policy for when to automatically print goals (grantingGravatar Hugo Herbelin2014-12-04
| | | | | | | the non-verbose mode which I guess one wants to obey whatever interface is used, and restoring a policy ok for coqtop - maybe would need a change if obeying the local verbose flag is not ok for PG or Jedit).
* Occur-check in refine.Gravatar Arnaud Spiwack2014-12-04
| | | | | | | | | | The occur check is done even if the flag [unsafe] is set to true. The rational is that a tactic cannot control where it takes pieces of terms from (and hence will not generally make terms which pass the occur-check), and it would be painful to ask every tactic which takes a term as an argument to do an occur check before [refine]. I reused the same error than used by unification. It gives a pretty nice error message. An alternative would be to have a dedicated error with pretty much the same error message. I'm not sure which is best, so I went for the simplest one. The same check is done in the compatibility layer. Fixes a reported bug which I cannot locate for some reason.
* Refine primitive: [unsafe] is now true by default.Gravatar Arnaud Spiwack2014-12-04
| | | Generally, tactics build type-correct terms. A safe refine is hence a waste of time (somtimes a significant one). The safe option is kept for specific purposes such as debugging, or some weird interaction with the pretyper and universes which still seemed to hold last time I checked (used by the user-level refine tactic).
* Some refactoring following previous commit.Gravatar Arnaud Spiwack2014-12-04
| | | Just hoisted a definition out of a loop. Not that this part of the code is time critical at all. I just feel it's cleaner.
* Better implementation of 4a858a51322f2dd488b02130ca82ebcc4dc9ca35.Gravatar Arnaud Spiwack2014-12-04
| | | Instead of filtering over the goals we have just creating and running through the evar_map, fetching the evar_info (that we've just created), and marking it as unresolvable, the goals are just created unresolvable. Which is probably what I should have done from the beginning, but it had escaped my notice during my code-cleaning session.
* Factoring 2ee213b824dda48c3fe60e95316daf09f07e8075.Gravatar Arnaud Spiwack2014-12-04
| | | I can't say I condone having unsafe primitives which are not used anywhere. But if they are to be there, let's make sure they don't duplicate code.
* Reactivating option "Set Printing Existential Instances" for asking printing ↵Gravatar Hugo Herbelin2014-12-04
| | | | full instances.
* coqdep: granting #2506 (./dir is the same as dir)Gravatar Hugo Herbelin2014-12-04
|
* coqdep: Warning about ml file clashes, keeping the file correspondingGravatar Hugo Herbelin2014-12-04
| | | | | | | | to the first -I option. Fortunately, with -I option, only one file can be found by occurrence of the option, so on the contrary of -Q/-R options for v files, the order is not file-system dependent.
* Slight improving of a unification error message.Gravatar Hugo Herbelin2014-12-03
|
* Updading test-suite.Gravatar Hugo Herbelin2014-12-03
|
* In solve_evar_evar, orient the heuristic over arities with differentGravatar Hugo Herbelin2014-12-03
| | | | | | types as it was before commit 710bae2a8c81a44. There is still at least one problem with bug #3392 to solve.
* When solving ?id{args} = ?id'{args'}, give preference to ?id:=?id' ifGravatar Hugo Herbelin2014-12-02
| | | | | | | | | | | possible, which is the "natural" way to orient an equation. At least it matters for matching subterms against patterns, so that it is the pattern variables which are substituted if ever the subterm has itself existential variables, as in: Goal exists x, S x = x. eexists. destruct (S _).
* Postponing the "evar <= evar" problems instead of solving them in anGravatar Hugo Herbelin2014-12-02
| | | | arbitrary direction as if it were an "evar = evar" problem.
* Being more scrupulous on preserving subtyping in evar-evar problems.Gravatar Hugo Herbelin2014-12-02
| | | | | Incidentally, this allows to make earlier the collapse of CUMUL to CONV when force is true.
* Being consistent in making arbitrary choices in recursive calls toGravatar Hugo Herbelin2014-12-02
| | | | | | | | | evar_define. Interestingly, the added choose in evarconv.ml allows solve_evar_evar to be observationally commutative, in the sense of not either fail or succeed in compiling the stdlib whether problems are given in the left-to-right or right-to-left order.
* Resolution of evar/evar problems: removed a test which should beGravatar Hugo Herbelin2014-12-02
| | | | subsumed by the call to project_evar_on_evar.
* For compatibility purpose, when setoid_rewriting a hypothesis, beta-iotaGravatar Pierre-Marie Pédrot2014-12-02
| | | | normalize it afterwards.
* More invariants in the code of Rewrite.Gravatar Pierre-Marie Pédrot2014-12-01
| | | | | In particular, the old hypinfo is made as a proper cache, preventing dynamic tricks to decide whether it was rightful to refresh it.
* Fixing test-suite.Gravatar Pierre-Marie Pédrot2014-12-01
|
* Added an arithmetical characterization of the hypothesis of WKL.Gravatar Hugo Herbelin2014-12-01
|
* Remove dead codeGravatar Enrico Tassi2014-12-01
|
* Better commentGravatar Enrico Tassi2014-12-01
|
* Continuing a8ad3abc15a2 which actually forgot to ensure freshness in current ↵Gravatar Hugo Herbelin2014-11-30
| | | | env.
* Set use_evars_eagerly_in_conv_on_closed_terms in rewrite_unif_flags too.Gravatar Hugo Herbelin2014-11-30
| | | | This allows to have the example in test setoid_unif.v to work again.
* Documenting the Set Refine Instance Mode.Gravatar Pierre-Marie Pédrot2014-11-30
|
* Adding a Refine Instance Mode option that allows to deactivate theGravatar Pierre-Marie Pédrot2014-11-30
| | | | | automatic refinement of instances, thus failing when provided with an incomplete term instead of silently lauching the proof mode.
* Adding test for bug #3417.Gravatar Pierre-Marie Pédrot2014-11-30
|
* Test for bug #3485.Gravatar Pierre-Marie Pédrot2014-11-30
|
* Fixing printing of dirpathes in Ppconstr. It was reversed.Gravatar Pierre-Marie Pédrot2014-11-30
|
* Test for bug #3487.Gravatar Pierre-Marie Pédrot2014-11-30
|
* Test of bug #3682.Gravatar Pierre-Marie Pédrot2014-11-30
|
* Fixing bug #3682.Gravatar Pierre-Marie Pédrot2014-11-30
| | | | | The function initializing proofviews were marking all evars as non-resolvables for the proofview, while only goal evars ought to be.
* Adding missing unsafe primitives to Proofview.Gravatar Pierre-Marie Pédrot2014-11-30
|
* fix compilation on ocaml 3.12 (Close: 3833)Gravatar Enrico Tassi2014-11-28
|
* Fix (somewhat obsolete) [Existential] command, which conflicted with the shelf.Gravatar Arnaud Spiwack2014-11-28
| | | | | When an evar was instantiated it failed to disapear from the shelf. It had the consequence of stopping Qed from happening. Fixes test-suite/success/apply.v
* Tactic primitives: missing [advance] lead to spurious dangling goals.Gravatar Arnaud Spiwack2014-11-28
| | | Closes #3801.
* STM: if a-p-always-delegate fetch states from parked worker on edit-atGravatar Enrico Tassi2014-11-28
| | | | | | | | If the async-proofs-always-delegate is passed, workers are killed only when the proof they computed is obsolete. If one jumps back to a state that was computed by the worker (and not the master) instead of (re)computing such state in the master ask the worker to send it back.
* Future: API for blocking futuresGravatar Enrico Tassi2014-11-28
|
* Reverting the following block of three commits:Gravatar Hugo Herbelin2014-11-27
| | | | | | | | | | | - 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.
* FAQ: fix some broken urlsGravatar Pierre Letouzey2014-11-27
|
* STM: hook called whenever a state is unreachableGravatar Enrico Tassi2014-11-27
| | | | Even indirectly, if it depends on another state that in turn failed.
* typosGravatar Enrico Tassi2014-11-27
|
* Fix test flags for fake_ideGravatar Enrico Tassi2014-11-27
|
* better to always print the thread idGravatar Enrico Tassi2014-11-27
|
* async_queries_* merged with async_proofs_*Gravatar Enrico Tassi2014-11-27
|