Ich schreibe einen Spielzeugmodellprüfer und bin an dem Punkt angelangt , an dem es Zeit ist, die Übersetzung von LTL in Buchi-Automaten zu implementieren.
Aus verschiedenen offensichtlichen Gründen möchte ich, dass der Algorithmus einfach ist :) zB möchte ich, dass der Code so lange wie möglich extrem klar und präzise bleibt.
Ich habe mir den Ansatz "Lokale Automaten + Eventualitätsautomaten" angesehen, der in mehreren Tutorials beschrieben wurde, aber er scheint weder einfach zu implementieren / zu verstehen (der Korrektheitsnachweis ist ziemlich groß), noch liefert er kleine Automaten. Also implementiere ich es nicht, bis ich sicher bin, dass ich es nicht bereuen werde :)
Daher wäre ich dankbar für Verweise auf Artikel, die einfache und effiziente Algorithmen für diese Übersetzung beschreiben, oder vielleicht einfache und ineffiziente - dann wären auch Artikel zur Minimierung von Buchi-Automaten willkommen :)
... oder gibt es vielleicht interessante alternative Ansätze zur LTL-Verifikation?
Als Referenz finden Sie hier eine Genealogie der LTL-zu-Buchi-Übersetzungsalgorithmen http://spot.lip6.fr/wiki/LtlTranslationAlgorithms . Kann jemand etwas dazu sagen?
Ich würde die Übersetzung betrachten, die durch alternierende Automaten geht. (Siehe Vardis Artikel "Alternierende Automaten und Programmüberprüfung"). Es ist eine sehr elegante Übersetzung von LTL zu alternierenden Automaten, und dann können Sie Mihano Ayashi (das auch elegant ist - es ist eine doppelte Teilmengenkonstruktion) verwenden, um zu nicht deterministischen Buchi-Automaten zu gelangen.
quelle