Skip to Content.
Sympa Menu

coq-club - [Coq-Club] Automation with existential goals

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] Automation with existential goals


Chronological Thread 
  • From: Klaus Ostermann <klaus.ostermann AT uni-tuebingen.de>
  • To: coq-club AT inria.fr
  • Subject: [Coq-Club] Automation with existential goals
  • Date: Mon, 14 Nov 2016 10:22:35 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=klaus.ostermann AT uni-tuebingen.de; spf=None smtp.mailfrom=klaus.ostermann AT uni-tuebingen.de; spf=None smtp.helo=postmaster AT mx04.uni-tuebingen.de
  • Ironport-phdr: 9a23:rP6lwR0GmrQD+7nqsmDT+DRfVm0co7zxezQtwd8Zse0eL/ad9pjvdHbS+e9qxAeQG96KsLQd06GO6ujJYi8p2d65qncMcZhBBVcuqP49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6JvjvGo7Vks+7y/2+94fdbghMijexe65+IAm5oQnNq8UdnJdvJLs2xhbVuHVDZv5YxXlvJVKdnhb84tm/8Zt++ClOuPwv6tBNX7zic6s3UbJXAjImM3so5MLwrhnMURGP5noHXWoIlBdDHhXI4wv7Xpf1tSv6q/Z91SyHNsD4Ubw4RTKv5LptRRT1iikIKiQ5/XnJhMJwkaxVoxyvqBJwzIHIb4+YL+Z+frrHcN8GWWZMUMRcWipcCY28dYsPCO8BMP5doYn5vVQOsAC+DhS1CuP01j9HmGX23agg3OQnFwHNwQstH9EKsHvOsdX1L70eUeeuzKnU0zrDdfZW1i376IjOaR0hvPeMXbNpfcrN1EkgCRjKjlSWqYzqITyV0P4BvHWF4Od5U++klm0pqxlprzSyyMohhZPFipwPxl3E7yl13ps5KNKgREJmb9OpH4Fcuz+AO4drXM8uWXxktSYmxrAApJW1ZjIFyI49yB7ac/GHc5aH4hbkVOuJJDd5i25pdb2lixav90igy/TwVtWp0FlUtSVFk9/Mtn8T2BzV8MSIV+Vy8l+g2TaJyQ/T9vlJLV06mKfUMZIt3KQ8m5oJvUjdAyP7l136jKqMeUUl/uio5f7nYrLjppKENI90jhvxMrk1msClBuQ4KRQOUHaB+eS5zrLj+0v5Ta5Xjv0wk6nVqYzaJdkFqaGiAg9V1Ikj5Ai5Dzu8zdsXg2ELLEhZdxKfk4jpJ1bOLejkAve4mlSgiStkx/TbPrL6GZjNNXjCkLL5fbln8UJcyQwzzcpe551OEL0BLujzCQfNs4nTCQZ8OAipyc7mDs9838UQQzGhGKicZYDWuEKTrsU0P+SWYYYTvn6pKPws+uWoimQllEUYdK+v9YYRaTWkA/lsIkOWbHyqjtpXQjRChRY3UOG/0A7KajVUfXvnB68=

When proving a goal with an existential, it matters when
eexists is used. For instance, with

Inductive foo : Set :=
| bar : forall n, n = 7 -> foo.

the following proof works

Goal foo -> exists {n:nat}, n=7.
intros. destruct H. eexists. exact(e). Defined.

but this one yields a "cannot instantiate ... not in scope" error

Goal foo -> exists {n:nat}, n=7.
intros. eexists. destruct H. exact(e).

It's easy to correct this error in a manual proof, but it is not clear to
me how to deal with such goals in (goal-direct) proof automation.

In principle, I could automate proofs like that using something like

Hint Extern 1 (?n = 7) =>
match goal with
| [ H : foo |- ?n = 7 ] => destruct H
end.

but the hint won't fire until I used "eexists" first - but I need to use
eexists _after_ the "destruct".

Is there a way to solve this conundrum?

Klaus






Archive powered by MHonArc 2.6.18.

Top of Page