Skip to Content.
Sympa Menu

coq-club - [Coq-Club] Wrong maximally inserted arguments?

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] Wrong maximally inserted arguments?


chronological Thread 
  • From: Edsko de Vries <devriese AT cs.tcd.ie>
  • To: coq-club AT pauillac.inria.fr
  • Subject: [Coq-Club] Wrong maximally inserted arguments?
  • Date: Mon, 16 Mar 2009 21:05:02 +0000
  • List-archive: <http://pauillac.inria.fr/pipermail/coq-club/>

Hi,

What is the appropriate solution when Coq chooses the wrong maximally inserted
arguments? I have a lemma (generated by Brian's LNgen tool)

  binds_unique :
  forall (A key : Type) (x : key) (a b : A) (E : list (key * A))
    (Eqdec : EqDec key eq) (Fset : FSet key Eqdec),
  binds x a E -> binds x b E -> uniq E -> a = b
  
  No implicit arguments

Although no arguments are implicit, some are 'maximally inserted' (I think); 
in
particular, when I do

  eapply binds_unique.

Then it seems to pick whatever instantiation of 'A key x..' it can find (the
wrong one, as it happens). When I do

  eapply binds_unique with (key := atom).

things work out; since I want this to happen automatically, I can do

  Hint Extern 2 ( _= _) => eapply binds_unique with (key := atom).

but it is slightly annoying that Coq picks the wrong argument without even
telling me that it is picking any.

Now, how can I find out which arguments are 'maximally inserted', and does 
one usually solve problems such as these? Is my workaround paradigmatic?

Thanks,

Edsko





Archive powered by MhonArc 2.6.16.

Top of Page