coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Jason Gross <jasongross9 AT gmail.com>
- To: coq-club <coq-club AT inria.fr>
- Subject: Re: [Coq-Club] undo eexists?
- Date: Thu, 21 May 2020 02:28:14 -0400
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=jasongross9 AT gmail.com; spf=Pass smtp.mailfrom=jasongross9 AT gmail.com; spf=None smtp.helo=postmaster AT mail-ej1-f48.google.com
- Ironport-phdr: 9a23:hhGS4xGfn77Js4a47dofLp1GYnF86YWxBRYc798ds5kLTJ7zo8WwAkXT6L1XgUPTWs2DsrQY0reQ6vm4EjVYvd6oizMrSNR0TRgLiMEbzUQLIfWuLgnFFsPsdDEwB89YVVVorDmROElRH9viNRWJ+iXhpTEdFQ/iOgVrO+/7BpDdj9it1+C15pbffxhEiCCybL9vLBi6txjdutQKjYdtN6o91hTEqWZUdupLwm9lOUidlAvm6Meq+55j/SVQu/Y/+MNFTK73Yac2Q6FGATo/K2w669HluhfFTQuU+3sTSX4WnQZSAwjE9x71QJH8uTbnu+Vn2SmaOcr2Ta0oWTmn8qxmRgPkhDsBOjUk9mzcl85+g79BoB+5qBN/zYzbboGbOvR9Y63TY88VSHFbUcpNTSFMGJ+wY5cNAucHIO1Wr5P9p1wLrRamAQejHvjvyjhOhnTr3KM6yeMhERrd3Ac9GN8Osm7brM7yNKcUXuC11q7IzS7Yb/5Swjr9543IfQogofGIR75/bc3RyUw2Gg7Dk16fppDrMSmP2eQRr2iU8fBgVeS3hmMjpQ98oiSjy8gwh4TJhowZ1F7J+CZnzIsrOdG1RlJ2bN+gHZZfuC+WK5V7TMMgTmxpuCg3xaELt5G4cSYE1pkqwQPUZfKAc4iN+B3jVeCRLC9ki3JiYrK/gQi98UykyuHmSMa7zUtKoyxYmdfPrnAAzwLf5tSDR/dn/Uqs2SyD2x7O5uxHO0w5mqnWJpg8ybAqjJUTq17MHirulUX2kqCWckIk9/Ct6+v9Y7XmooaQOJF2ig3jK6gulMOyDOciPggBWGib/uu81Ln98kHjXLpKifg2nrHYsJDcO8sbura0DxFJ3osn8RqyDDer3M4GkXUaL19JYh2KgovxN1HLOv/4DPO/g1q2kDdswvDLJr/hDY/WLnjElrfhcqx960lHyAooyd1S/J1UCrQbL/LyXk/9rsDXDhg8MwCs2eboFM191p8CWWKIGqKWLKTSsUaR6u0zJ+mMeZQatS3mK/kl4v7ulWU2lUUcfamvx5sXaWq3Eu5oI0WDMjLQhYIKFn5PtQ4jRqS+g1qbFDVXenyaXqQm5zh9BpjwXqnZQYX4orWa2yHzMYdRfXsOXlKFCnDueJ+DQOxdQC2XK85l1DcDUO7yGMcayRiyuVqimPJcJe3O93hA7MOx5J1O/+TW0CoK23lxBsWZ3XuKSjgtzGwNTj4ymqt4pB4kkwrR4e1Dm/VdUOdrybZJXwM9b8OOyuV7D5X/WFuEcIvZDlmhRdqiDHc6Sddjm4ZSMXY4IM2ri1X45wTvG6UczuXZC5k986aa1H/0dZ5w
This is equivalent to assuming `Coq.Logic.ChoiceFacts.ConstructiveIndefiniteDescription_on _` of type `(exists x, P x) -> { x:A | P x }`. If you have this, then I believe you can just do `refine (let H := _ in proj2_sig (ConstructiveIndefiniteDescription_axiom H))`
As for why this requires classical axioms, consider the case where you do `eexists ?[x]; pose ?x as y.` And then you want to go back to the case where you just had `exists x, P x`, except whatever you use to fill in `x` will still be accessible as `y`.
As for why this requires classical axioms, consider the case where you do `eexists ?[x]; pose ?x as y.` And then you want to go back to the case where you just had `exists x, P x`, except whatever you use to fill in `x` will still be accessible as `y`.
On Thu, May 21, 2020 at 12:09 AM Abhishek Anand <abhishek.anand.iitg AT gmail.com> wrote:
Is there a way to undo eexists?Suppose my goal is like:....---------exists x, P xThen I do eexists....---------P ?xThen I try to find a solution of ?x. This form with no quantifiers is easier to maniplulate the goal to find solutions. If I cannot find one, I would like to undo the eexists and make the goal as follows (perhaps this eexists should be done later when more info is available):....---------exists x, P xWe would be grateful for ideas on how to achieve this.Our actual problem is more complex and this "exists" is in an embedded logic (RHS of separation logic |--) that does not have Coq's nice constructivity properties that ensure (I think) that eexists always preserves provability of a goal.Thanks-- Abhishekhttp://www.cs.cornell.edu/~aa755/
- [Coq-Club] undo eexists?, Abhishek Anand, 05/21/2020
- Re: [Coq-Club] undo eexists?, Jason Gross, 05/21/2020
Archive powered by MHonArc 2.6.19+.