¿Puede alguien darme por favor un ejemplo simple de instanciación existencial y generalización existencial en Coq? Cuando quiero probar exists x, P
, donde P
es Prop
que usa x
, a menudo quiero nombrar x
(como x0
o algo así), y manipular P. ¿Puede ser esto en Coq?ejemplificación existencial y generalización en coq
Respuesta
Si va a demostrar la existencia directamente y no a través de un lema, puede usar eapply ex_intro
. Esto introduce una variable existencial (escrita ?42
). A continuación, puede manipular el término. Para completar la prueba, debe proporcionar una forma de construir un valor para esa variable. Puede hacerlo explícitamente con la táctica instantiate
, o implícitamente a través de tácticas como eauto
.
Tenga en cuenta que a menudo es engorroso trabajar con variables existenciales. Muchas tácticas suponen que todos los términos son instanciados y pueden ocultar los existentes en subgoles; solo se enterará cuando Qed
le diga "Error: intento de guardar una prueba incompleta". Solo debe usar variables existenciales cuando tenga un plan para instanciarlas pronto.
Aquí hay un ejemplo tonto que ilustra el uso de eapply
.
Goal exists x, 1 + x = 3.
Proof. (* ⊢ exists x, 1 + x = 3 *)
eapply ex_intro. (* ⊢ 1 + ?42 = 3 *)
simpl. (* ⊢ S ?42 = 3 *)
apply f_equal. (* ⊢ ?42 = 2 *)
reflexivity. (* proof completed *)
Qed.
Con Coq trunk puede convertir existenciales no activados en subobjetivos al final de la prueba, que es algo que deseaba desde hace mucho tiempo. –
Una adición a [el comentario anterior] (https://stackoverflow.com/questions/10686164/existencial-instantiation-and-generalization-in-coq#comment13933112_10693631): esto se puede hacer con ['Grab Existenntial Variables'] (https://coq.inria.fr/refman/Reference-Manual009.html#GrabEvars) –
- 1. F # generalización y rendimiento automáticos
- 2. CoffeeScript Operador existencial y este
- 3. Diferencia entre Z3 y coq
- 4. búsqueda existencial y consulta sin el alboroto
- 5. Haskell cuantificación existencial en detalle
- 6. Introducción de Forall en coq?
- 7. Cuantificación existencial sobre los valores
- 8. ¿Cuándo usar el tipo existencial en Scala?
- 9. ¿Qué es un constructor en Coq?
- 10. ¿Qué significa `true = false` en Coq?
- 11. Error al definir Ackermann en Coq
- 12. invertir recursivamente las hipótesis en coq
- 13. La generalización del algoritmo Bentley-Ottmann
- 14. ¿Cómo descomprimir un tipo existencial haskell?
- 15. Ejemplificación lenta en desarrollo de Objective-C/iPhone
- 16. Ejemplificación de simulación automática en una prueba de Spring JUnit
- 17. Generalización para la expresión regular en cualquier lista
- 18. Cómo hacer casos con un tipo inductivo en Coq
- 19. Ejemplificación lenta de iTextSharp PdfReader con formato grande rellenable
- 20. ¿Qué significa V en la extensión de archivo Coq?
- 21. Problema de generalización de Haskell (que involucra listas de comprensión)
- 22. Glifos Unicode para palabras clave y operadores en Coq/Proof General bajo Emacs
- 23. Ayuda con una prueba de Coq de subsecuencias
- 24. una generalización simple de la clase de tipo Applicative (Functor); coincidencia de patrones en constructores
- 25. Simulación de la cuantificación existencial en los tipos de devolución de función
- 26. Control de la exportación de constructores en código extraído de Coq
- 27. "Ejemplificación implícita de plantilla indefinida" cuando la clase de plantilla que declara hacia adelante
- 28. ¿Cuáles son los casos de uso para probar Scala 2.9 ... generalización de capturas?
- 29. Comportamiento incoherente de Coq con respecto a los parámetros implícitos de las definiciones de Let
- 30. Existentials y chatarra tu Boilerplate
Sé que ha habido preguntas coq aquí en el pasado, pero sospecho que a medida que se introducen en el mejor lugar para las preguntas más sitios Coq es ahora http://cs.stackexchange.com/ (no tan contentos con la fragmentación yo mismo, pero es un hecho de la vida ...) –
@andrewcooke [Esto no se ha establecido de manera concluyente.] (http://meta.cs.stackexchange.com/questions/52/scope-limits-on- proof-assistants-eg-coq) Mi sensación es que las preguntas de Coq son más sobre el tema en SO si el objetivo es hacer una prueba, y en [cs.se] si el objetivo es entender por qué está funcionando una técnica de prueba o no funciona, pero es una línea muy delgada. La experiencia se extiende por [so], [cs.se] y [cstheory.se]. – Gilles