aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-06-20Small optimization in clear_body.Pierre-Marie Pédrot
We do not check that an hypothesis is used in context declarations that occur before it.
2016-06-20Fix bug #4825: [clear] should not dependency-check hypotheses that come ↵Pierre-Marie Pédrot
above it.
2016-06-20Prevent a useless evar normalization in Clenvtac.unify.Pierre-Marie Pédrot
2016-06-20Do not evar-normalize goals when interpreting some hardwired genargs.Pierre-Marie Pédrot
2016-06-19Merge 'pr/215' into trunkEnrico Tassi
2016-06-19Fix bug #4836: Anomaly: Uncaught exception Invalid_argument.Pierre-Marie Pédrot
2016-06-18Fix path separator on windowsJason Gross
2016-06-18Fix the build on WindowsJason Gross
This fixes bug #4828 (https://coq.inria.fr/bugs/show_bug.cgi?id=4828).
2016-06-18Merge PR# 169: Local type-in-type flag.Pierre-Marie Pédrot
2016-06-18Fixing the checker.Pierre-Marie Pédrot
I had to remove code handling the -type-in-type option introduced by commit 9c732a5. We should fix it at some point, but I am not sure that using the checker with a system known to be blatantly inconsistent makes much sense anyway.
2016-06-18Reuse the typing_flags datatype for inductives.Pierre-Marie Pédrot
2016-06-18Moving the typing_flags to the environment.Pierre-Marie Pédrot
2016-06-18Print the type-in-type flag in various user-facing functions.Pierre-Marie Pédrot
2016-06-18Adding a local type-in-type flag in kernel declarations.Pierre-Marie Pédrot
2016-06-18Test-suite fix to 1744e37 (injection in context).Hugo Herbelin
Preserve a compatibility whether the Structural Injection flag is on or not.
2016-06-18Backporting c064fb933 from 8.5 (another regression with Ltac trace report).Hugo Herbelin
Doing it explicitly because it is in another file.
2016-06-18Adding an "as" clause to specialize.Hugo Herbelin
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".
2016-06-18Giving a more natural semantics to injection by default.Hugo Herbelin
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.
2016-06-18Exporting a generic argument induction_arg. As a consequence,Hugo Herbelin
simplifying and generalizing the grammar entries for injection, discriminate and simplify_eq.
2016-06-18A cleaning phase around delayed induction arg + exporting force_induction_arg.Hugo Herbelin
2016-06-18Adding eintros to respect the e- prefix policy.Hugo Herbelin
In pat%constr, creating new evars is now allowed only if "eintros" is given, i.e. "intros" checks that no evars are created, and similarly e.g. for "injection ... as ... pat%constr". The form "eintros [...]" or "eintros ->" with the case analysis or rewrite creating evars is now also supported. This is not a commitment to say that it is good to have an e- modifier to tactics. It is just to be consistent with the existing convention. It seems to me that the "no e-" variants are good for beginners. However, expert might prefer to use the e-variants by default. Opinions from teachers and users would be useful. To be possibly done: do that [= ...] work on hypotheses with side conditions or parameters based on the idea that they apply the full injection and not only the restriction of it to goals which are exactly an equality, as it is today.
2016-06-17par: like all: but in parallelEnrico Tassi
This commit documents par:, fixes its semantics so that is behaves like all:, supports (toplevel) abstract and optimizes toplevel solve. `par: solve [tac]` is equivalent to `Ltac tac1 := solve[tac]...par: tac1` but is optimized for failures: if one goal fails all are aborted immediately. `par: abstract tac` runs abstract on the generated proof terms. Nested abstract calls are not supported.
2016-06-17remote counter: avoid thread race on sockets (fix #4823)Enrico Tassi
With par: the scenario is this one: coqide --- master ---- proof worker 1 (has no par: steps) ---- proof worker 2 (has a par: step) ---- tac worker 2.1 ---- tac worker 2.2 ---- tac worker 2.3 Actor 2 installs a remote counter for universe levels, that are requested to master. Multiple threads dealing with actors 2.x may need to get values from that counter at the same time. Long story short, in this complex scenario a mutex was missing and the control threads for 2.x were accessing the counter (hence reading/writing to the single socket connecting 2 with master at the same time, "corrupting" the data flow). A better solution would be to have a way to generate unique fresh universe levels locally to a worker.
2016-06-17Mentioning goal selectors in CHANGESEnrico Tassi
2016-06-16Merge branch 'nzgcd' into trunkMatthieu Sozeau
2016-06-16Remove unneded hints in NZGcdMatthieu Sozeau
They were already commented out, Pierre confirms they're spurious.
2016-06-16proof mode: print unification constraintsMatthieu Sozeau
along with goals, with nice formatting.
2016-06-16Tentative fix of test-suite file to avoid loopMatthieu Sozeau
Looping on jenkins only, couldn't reproduce locally. To be investigated further.
2016-06-16Typeclasses:rename solve_instantiation* & use HookMatthieu Sozeau
2016-06-16Fix resolve_one_typeclass to use the new engineMatthieu Sozeau
2016-06-16Bind resolve_one_typeclass to 8.5 or 8.6 resolutionMatthieu Sozeau
2016-06-16Fix wrong tabulation in CHANGESMatthieu Sozeau
2016-06-16Put autoapply back, lost during rebaseMatthieu Sozeau
2016-06-16Cleanup and refactoringMatthieu Sozeau
2016-06-16Document new Hint Mode option.Matthieu Sozeau
2016-06-16Extend Hint Mode to handle the no-head-evar caseMatthieu Sozeau
Suggested by R. Krebbers and C. Cohen, this makes modes more applicable, by allowing to trigger resolution on partially instantiated indices. This is a rough but fast approximation of the pattern on which one would like instances to apply.
2016-06-16Revise syntax of Hint CutMatthieu Sozeau
As noticed by C. Cohen it was confusingly different from standard notation.
2016-06-16Example given at DeepSpec workshopMatthieu Sozeau
2016-06-16Purely refactoring and code/API cleanup.Matthieu Sozeau
Fix test-suite files
2016-06-16eauto: fix test-suite fileMatthieu Sozeau
Now that typeclasses eauto uses the new eauto.
2016-06-16bteauto: a Proofview.tactic for multiple goalsMatthieu Sozeau
Add an option to force backtracking at toplevel, which is used by default when calling typeclasses eauto on a set of goals. They might be depended on by other subgoals, so the tactic should be backtracking by default, a once can make it not backtrack.
2016-06-16Typeclasses: allow shelved subgoalsMatthieu Sozeau
Be more lenient, allowing non-class subgoals to remain after resolution, this seems necessary when launching resolution in goals containing evars. Also put a tclONCE when hints don't need to backtrack.
2016-06-16Minor cleanupMatthieu Sozeau
2016-06-16Typeclasses: refine the eauto tacticMatthieu Sozeau
- Treat shelved dependent subgoals that might not be resolved after some proof search correctly by restarting their resolution as soon as possible (if they are typeclasses in only_classes mode). - Treat dependencies between goals better, avoiding backtracking more often when dependencies allow.
2016-06-16Typeclasses: verbosity and Limit Intros optionsMatthieu Sozeau
To deactivate the limitation of introductions (which was added to avoid eta expansions in proof terms). This can cause huge blowups due to dumb backtracking. The arrow introduction rule is reversible, so better do it eagerly!
2016-06-16Proofview: extensions for backtracking eautoMatthieu Sozeau
unshelve_goals is used to correctly register dependent subgoals that have to be solved. Resolution may fail to do so using hints, so we have to put them back as goals in that case. The shelf is a good interface for doing that. unifiable can be used outside proofview to detect dependencies between goals. This might be better in another module.
2016-06-16typeclass resolution: add two compatibility optionsMatthieu Sozeau
Set Typeclasses Compatibility "8.5". uses the old resolution tactic (off by default, but useful for debugging incompatibilities) Set Typeclasses Unification Compatibility "8.5". uses the old clenv unification tactic in resolution even with the new proof engine (on by default for now). Also fix the 8.5-compatible unification with the new engine resolution function, by using with_shelf and unshelve.
2016-06-16setoid_rewrite: fix the Params resolution tacticMatthieu Sozeau
Add a substitution of a local variable by its body to ensure proper unification without having to make all local variables unfoldable.
2016-06-16Fix incorrect caching of local hints w.r.t sectionsMatthieu Sozeau
2016-06-16Compat with ocaml 4.01Matthieu Sozeau