In meiner Coq-Entwicklung lerne ich, wie man neue Taktiken erstellt, die auf meine Problemdomäne zugeschnitten sind, a la Prof. Adam Chlipala.Wie benutze ich Auto mit Wiederholung in benutzerdefinierten Taktiken?
Auf dieser Seite beschreibt er, wie man mächtige Taktiken erstellt, indem man repeat
um eine match
wickelt, die auf verschiedene interessante Bedingungen reagiert. Die repeat
iteriert dann und ermöglicht eine weitreichende Inferenz.
Die Verwendung von repeat
hat einen Vorbehalt (Hervorhebung von mir):
Die
repeat
, die wir hier verwenden eine taktische oder Taktik combinator genannt wird. Das Verhalten vonrepeat t
besteht darin, dass eine Schleife durchlaufen wird, indemt
läuft,t
für alle generierten Subziele ausgeführt wird,t
ihre generierten Subziele ausgeführt wird, und so weiter. Wennt
an irgendeinem Punkt in diesem Suchbaum fehlschlägt, wird dieses spezielle Unterziel durch spätere Taktiken behandelt. Daher ist es wichtig, niemalsrepeat
mit einer Taktik zu verwenden, die immer erfolgreich ist.
Jetzt habe ich bereits eine starke Taktik im Einsatz, auto
. Es führt in ähnlicher Weise Ketten von Schritten zusammen, diesmal aus Hint-Datenbanken. Von auto
‚s Seite:
auto
entweder vollständig löst das Ziel oder sonst überlässt es intakt.auto
undtrivial
nie fehlschlagen.
Boo! Ich habe schon einige Mühe in Kuratieren auto
‚s Hinweis Datenbanken investiert, aber es scheint mir verboten werde von ihnen in Taktiken repeat
mit (das heißt, interessante Taktik.)
Gibt es eine Variation von auto
, die ausfallen können, oder ansonsten in loops richtig verwendet werden?
Zum Beispiel scheitert vielleicht diese Variante, wenn sie [das Ziel] intakt lässt.
EDIT: auto
in Schleifen Einbindung ist nicht die „richtige“ Art und Weise, es trotzdem zu tun (siehe this), aber die eigentliche Frage nach einer fehlerhaften Version von Auto ist vielleicht noch interessant.
Es scheint mir, dass Ihre Frage in Wirklichkeit zwei Fragen ist: die im Titel ['progress auto' könnte das sein, nach dem Sie gesucht haben]; und die, die du im Körper beschreibst, auf die du bereits eine Antwort gegeben hast. –
Stimmt, ich nehme an, ich sollte es umbenennen "Wie benutze ich Auto mit Wiederholung in benutzerdefinierten Taktiken?" – phs
Der neue Titel hört sich gut an, aber wird er nicht (teilweise) die Antwort von @Zimm i48 ungültig machen?Es wäre großartig, wenn Sie die Fragen tatsächlich teilen könnten, denn beide sind interessant. Aber es ist dein Ruf :) –