Kann mir bitte jemand ein einfaches Beispiel für existentielle Instanziierung und existenzielle Generalisierung in Coq geben? Wenn ich exists x, P
beweisen möchte, wo P
ist einige Prop
, die x
verwendet, möchte ich oft x
(wie x0
oder einige solcher) nennen, und manipulieren P. Kann dies eine in Coq sein?existentielle Instanziierung und Verallgemeinerung in Coq
Antwort
Wenn Sie das Existential direkt und nicht durch ein Lemma beweisen möchten, können Sie eapply ex_intro
verwenden. Dies führt eine existentielle Variable ein (geschrieben ?42
). Sie können dann den Begriff manipulieren. Um den Beweis zu vervollständigen, müssen Sie eventuell einen Weg finden, einen Wert für diese Variable zu konstruieren. Sie können dies explizit mit der Taktik instantiate
oder implizit durch Taktiken wie eauto
tun.
Beachten Sie, dass es oft mühsam ist, mit existenziellen Variablen zu arbeiten. Viele Taktiken gehen davon aus, dass alle Begriffe instanziiert werden und möglicherweise Existenzen in Teilzielen verbergen. Sie werden nur herausfinden, wenn Qed
Ihnen sagt "Fehler: Versuch, einen unvollständigen Beweis zu speichern". Sie sollten nur dann existentielle Variablen verwenden, wenn Sie einen Plan haben, sie in Kürze zu instanziieren.
Hier ist ein dummes Beispiel, das die Verwendung von eapply
veranschaulicht.
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.
Mit Coq trunk können Sie uninstantiierte Existenziale am Ende des Proofs in Teilziele umwandeln - was ich mir lange gewünscht habe. –
Ein Zusatz zu [dem vorherigen Kommentar] (https://stackoverflow.com/questions/10686164/existential-instantiation-and-generalization-in-coq#comment13933112_10693631): dies kann mit ['Grab Existential Variables.' getan werden] (https://coq.inria.fr/refman/Reference-Manual009.html#GrabEvars) –
- 1. OWL existentielle Beschränkungen und notwendige Bedingungen
- 2. Unterschiede zwischen Coq und Agda
- 3. Erstellen und Vergleichen von Sets in Coq
- 4. Verfeinern und @ (at) Symbol in Coq 8.5pl1
- 5. Forall Einführung in Coq?
- 6. Produkttyp in Coq
- 7. "Verbose" Auto in Coq
- 8. Existentielle Art in Funktion höherer Ordnung
- 9. Idiomatische Ersatz für existentielle Typen
- 10. Standardwerte unterliegen existentielle Einschränkung in Haskell
- 11. Einschränkungen des Fixpunkts in Coq?
- 12. Wie die Verallgemeinerung Fehlerrate eines Entscheidungsbaums
- 13. Probleme bei der Verallgemeinerung von Scala-Klassen
- 14. Entfaltete verschachtelte Definitionen in Coq
- 15. Templated Operator Instanziierung und Typumwandlung
- 16. Definition nach Eigenschaft in Coq
- 17. Verallgemeinerung auf mehrere BLAS/LAPACK-Bibliotheken
- 18. mehrere Erfolge bei Coq-Verzweigungen und Backtracking?
- 19. Coq: implizite Variablen hinzufügen
- 20. Coq funktionale Erweiterung
- 21. Coq Inferenz Verhalten
- 22. Coq: Unzureichende Begründung Fehler
- 23. Wie funktioniert der existentielle Operator von CoffeeScript?
- 24. AssetManage Instanziierung
- 25. jsonb existentielle Operatoren mit parametrisierten Abfragen
- 26. Scala Universal-vs Existentielle Art Verwirrung
- 27. Alle Axiome anzeigen Coq
- 28. von Coq importiert
- 29. Existentielle Typ oder Typ gebunden Parameterfehler
- 30. Mit Bezug auf eine existentielle Variable
ich weiß, dass es in der Vergangenheit coq Fragen hier, aber ich vermute, dass da mehr Websites, um den besten Platz für coq Fragen eingeführt werden, ist jetzt http://cs.stackexchange.com/ (nicht so glücklich mit die Fragmentierung selbst, aber es ist eine Tatsache des Lebens ...) –
@andrewcooke [Dies wurde nicht abschließend festgestellt.] (http://meta.cs.stackexchange.com/questions/52/scope-limits-on- proof-assistants-eg-coq) Mein Gefühl ist, dass Coq-Fragen mehr zum Thema von SO gehören, wenn das Ziel ist, einen Beweis zu bekommen, und auf [cs.se], wenn das Ziel ist zu verstehen, warum eine Proof-Technik funktioniert oder nicht funktioniert, aber es ist eine sehr dünne Linie. Die Expertise ist über [so], [cs.se] und [cstheory.se] verbreitet. – Gilles