coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- 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
- [Coq-Club] Automation with existential goals, Klaus Ostermann, 11/14/2016
- Re: [Coq-Club] Automation with existential goals, Pierre Courtieu, 11/14/2016
- Re: [Coq-Club] Automation with existential goals, Klaus Ostermann, 11/14/2016
- Re: [Coq-Club] Automation with existential goals, Pierre Courtieu, 11/14/2016
- Re: [Coq-Club] Automation with existential goals, Jonathan Leivent, 11/14/2016
- Re: [Coq-Club] Automation with existential goals, Jonathan Leivent, 11/16/2016
- Re: [Coq-Club] Automation with existential goals, Jonathan Leivent, 11/14/2016
- Re: [Coq-Club] Automation with existential goals, Pierre Courtieu, 11/14/2016
- Re: [Coq-Club] Automation with existential goals, Klaus Ostermann, 11/14/2016
- Re: [Coq-Club] Automation with existential goals, Pierre Courtieu, 11/14/2016
Archive powered by MHonArc 2.6.18.