Kennt jemand Arbeiten zur Spielesemantik für koinduktive Prädikate?
Ein koinduktives Prädikat ist eines, bei dem das Prädikat selbst im Körper des Prädikats aufgerufen wird, und wir nehmen die Bedeutung des Prädikats als den größten Fixpunkt der zugrunde liegenden Definition. Ein solches Prädikat wird über eine unendliche Datenstruktur definiert, wie beispielsweise einen Stream oder einen unendlichen Baum oder ein markiertes Übergangssystem und so weiter.
Ein zu einfaches Beispiel ist das folgende (in Haskell):
data Cat = BlackCat | WhiteCat
data Stream a = Stream a (Stream a)
allBlacks :: Stream Cat -> Bool
allBlacks (Stream cat rest) = cat == BlackCat && allBlacks rest
Ich kann den Strom aller schwarzen Katzen wie folgt definieren:
blackCats :: Stream Cat
blackCats = Stream BlackCat blackCats
und verwenden Sie die Koinduktion, um zu beweisen:
allBlacks blackCats
Man könnte sich ein koinduktives Prädikat als eine unendliche Konjunktion oder Disjunktion vorstellen, indem man sich einfach vorstellt, dass es vollständig ausgerollt ist. Die Spielsemantik in dieser Einstellung wäre unkompliziert: Für eine unendliche Konjunktion muss der Fälscher auswählen, welche Konjunktion gefälscht werden soll, um das Spiel zu gewinnen. Für eine unendliche Disjunktion muss der Verifizierer auswählen, welche Disjunktion erfüllt werden soll, um das Spiel zu gewinnen.
Es gibt jedoch eine natürliche Reihenfolge bei der "Bewertung" des koinduktiven Prädikats, die ignoriert wird, wenn es als unendliche Konjunktion oder Disjunktion betrachtet wird, und ich möchte, dass diese Reihenfolge in der Spielsemantik erfasst wird, nämlich, dass das Spiel durch Spielen jedes einzelnen fortgesetzt wird disjunkt / konjunkt wiederum.
Ein weiteres Problem, das ich habe, ist das Verständnis, welche Gewinnbedingung verwendet werden muss, um die Unendlichkeit des Prädikats zu erfassen. Oder um es mit Laien zu sagen: Woher weiß ich, dass es in diesem vermeintlich unendlichen Strom schwarzer Katzen keine weiße Katze gibt - es könnte nur nach dem Punkt sein, an dem ich aufhöre zu suchen?
zusätzliches Beispiel
Betrachten Sie den folgenden Datentyp (wieder in Haskell):
data Tree a = Tree (a -> Maybe (Tree a))
Tree A
Tree ATree A
Ich suche einen Formalismus, um solche Prädikate in Bezug auf die spieltheoretische Semantik auszudrücken. Ein Link zu bestehenden Arbeiten wäre sehr dankbar. Die Hauptsache, bei der ich Probleme habe, meinen Kopf herumzukriegen, ist die Gewinnbedingung (wie in einigen der folgenden Kommentare besprochen). Obwohl das Spiel für immer dauert, sind unendliche Spiele kein Unentschieden.