HoTT / coq

Coq is a formal proof management system. It provides a formal language to write mathematical definitions, executable algorithms and theorems together with an environment for semi-interactive development of machine-checked proofs.
http://coq.inria.fr/
GNU Lesser General Public License v2.1
27 stars 5 forks source link

[eauto] doesn't know how to deal with eta-expanded primitive projections (polyproj) #79

Closed JasonGross closed 10 years ago

JasonGross commented 10 years ago
Set Primitive Projections.
Set Implicit Arguments.
Set Universe Polymorphism.

Inductive paths A (x : A) : A -> Type := idpath : paths x x.

Notation "x = y :> A" := (@paths A x y).
Notation "x = y" := (x = y :> _).

Record foo := { x : Type; H : x = x }.

Create HintDb bar discriminated.
Hint Resolve H : bar.
Goal forall y : foo, @x y = @x y.
intro y.
progress auto with bar. (* failed to progress *)

Removing the @ signs from the goal "fixes" things.

If eta-expanded primitive projections are actually treated differently (as it seems they are), I would very much like a Set Printing Primitive Projections or similar that annotates which projections are primitive and which are eta-expanded; I think that some of the hardest bugs to find start with goals which depend subtlely on how you got there, and I don't want there to be yet another kind of bug for which Set Printing All doesn't give you enough to re-create the buggy context in a new goal.

JasonGross commented 10 years ago

This seems to be fixed in trunk-polyproj.