Semántica del juego para predicados coinductores

8

¿Alguien sabe de algún trabajo en la semántica de juegos para predicados coinductores?

Un predicado coinductivo es aquel en el que el predicado en sí se llama en el cuerpo del predicado, y estamos tomando el significado del predicado como el mayor punto fijo de la definición subyacente. Dicho predicado se definirá sobre una estructura de datos infinita, como una secuencia o árbol infinito o un sistema de transición etiquetado, etc.

Un ejemplo demasiado simple es el siguiente (en Haskell):

data Cat = BlackCat | WhiteCat
data Stream a = Stream a (Stream a)

allBlacks :: Stream Cat -> Bool
allBlacks (Stream cat rest) = cat == BlackCat && allBlacks rest

Puedo definir el flujo de todos los gatos negros como:

blackCats :: Stream Cat
blackCats = Stream BlackCat blackCats

y usar coinducción para probar:

allBlacks blackCats

Uno podría pensar en un predicado coinductivo como una conjunción o disyunción infinita, simplemente imaginando que se desenrolla por completo. La semántica del juego en esta configuración sería sencilla: para una conjunción infinita, el Falsificador necesita seleccionar qué conjunción falsificar para ganar el juego; para una disyunción infinita, el Verificador necesita seleccionar qué disyunción satisfacer para ganar el juego.

Sin embargo, existe un orden natural en la 'evaluación' del predicado coinductivo que se ignora cuando se considera como una conjunción o disyunción infinita, y me gustaría que este orden se capture en la semántica del juego, a saber, que el juego continúa jugando cada disyunct / conjunct a su vez.

Un problema adicional que tengo es entender qué condición ganadora usar para capturar la naturaleza infinita del predicado. O para decirlo en términos de laicos: ¿cómo sé que no hay un gato blanco en esta supuesta corriente infinita de gatos negros? ¿Podría ser simplemente después del punto en que dejo de buscar?

ejemplo adicional

Considere el siguiente tipo de datos (nuevamente en Haskell):

data Tree a = Tree (a -> Maybe (Tree a))

Tree AF(X)=(X+1)UNA

R: ⊆UNA×UNAR

CovmirsTree A×Tree A

Covmirs(α,β)= unaUNA Si α(una) entonces sisi tal que unaRsi y β(si) y Covmirs(α(una),β(si))

Estoy buscando un formalismo para expresar tales predicados en términos de semántica de teoría de juegos. Un enlace al trabajo existente sería muy apreciado. Lo principal que tengo problemas para entender es la condición ganadora (como se discute en algunos de los comentarios a continuación). Aunque el juego dura para siempre, las jugadas infinitas no constituyen un empate.

Dave Clarke
fuente
¿Ya has visto los enfoques semánticos del juego para la bisimulación? Con esos, esencialmente Verifier gana exactamente cuando el juego es infinito, es decir, Falsifier no pudo hacerla tropezar.
Marc Hamann
De hecho, Bisimulation, Model Checking y otros juegos de Colin Sterling deberían ayudarme. Su libro Modal and Temporal Properties of Processes tiene un material similar, aunque con menos detalles.
Dave Clarke

Respuestas:

4

Vicious Circles de Barwise and Moss es una cornucopia de razonamiento co-algebraico / co-inductivo, e incluye material sobre juegos co-inductivos.

No estoy seguro de si lo ayudará en su necesidad específica, pero podría ser la fuente de inspiración en esta línea de razonamiento.

Editar (x2):

Creo que puede seguir un enfoque modificado de estilo Ehrenfeucht-Fraïssé como este: Falsifier puede seleccionar cualquier elemento de la secuencia / disyunción / conjunción. El verificador entonces tiene que mostrar que cualquier artículo debe ser un gato negro.

(Puede aplicar restricciones de pedido o de número de opciones en Falsifier sin pérdida de generalidad para un conjunto finito de reglas coinductivas).

Si piensas en la coinducción como solo inducción sin un caso base, es obvio que la única regla de (co) inducción que tienes blackCatses cat == BlackCat, entonces, ¿qué otra cosa podría estar un gato individual en esa corriente? Cualquier gato que seleccione Falsifier tendrá que cumplir con esa regla, por lo que Verifier gana.

Obviamente, esto se escalaría a reglas coinductivas más numerosas y complejas, donde el "desafío" para Verifier es elegir la regla apropiada para cualquier elemento que elija Falsifier .

Bisimulación de Colin Sterling , Model Checking y otros juegos , deberían ayudarte. Su libro Modal and Temporal Properties of Processes tiene un material similar, aunque con menos detalles.

Marc Hamann
fuente
Gracias Mark Ciertamente hay algo de material en el libro para ayudarme. Bueno, mas que algunos.
Dave Clarke
Quise decir "Marc".
Dave Clarke
Gracias de nuevo Marc. El problema que quiero evitar es que el Falsificador pueda saltar al centro de la secuencia para encontrar el contraejemplo. Necesitan jugar el juego paso a paso. Lo que me falta es la condición ganadora. Ahora me doy cuenta de que mi ejemplo es demasiado pequeño. Pronto encontraré uno más grande.
Dave Clarke
Como aludí en mi comentario entre paréntesis, creo que puedes insistir en que Falsifier seleccione la cabeza de la secuencia. En ese caso, es probable que quieras dejar que elija k el número de turnos que jugarán. Entonces, el trabajo de Verifier es mostrar que para todos los k, ella siempre puede verificar la negrura. Sin embargo, espero con interés su ejemplo ampliado en lugar de bombardearlo con cosas en las que ya haya pensado. ;-)
Marc Hamann
1

Como un punto culminante, quieres decir en data Stream a = ...lugar de data Stream a :: ....

Your allBlacks es solo un predicado semidecidible, por lo que hay una estrategia que conduce a un juego sin final por el cual sigues jugando BlackCat. Desde la perspectiva de la teoría de dominio, el cálculo no es productivo ya que no hay aumento de información al consumir un elemento de la secuencia cuando es igual a BlackCat. Por esa razón, no creo que el predicado realmente pueda llamarse coinductivo, ¿verdad? Mi sospecha es que esto es lo que subyace a su confusión sobre las condiciones ganadoras: el estancamiento indefinido es un empate.

Por Vognsen
fuente
Código ahora corregido. Creo que es posible especificar completamente un juego para este predicado, pero no conozco los detalles. En cualquier caso, incorporaré algunas de sus dudas en la pregunta.
Dave Clarke
Esto no siempre es cierto. Según tengo entendido, las diversas condiciones de aceptación de Büchi, Müller, Rabin y Streett y la condición de paridad determinan los juegos infinitos, lo que significa que no hay empate. Sin embargo, todavía estoy entendiendo estas nociones, lo admito.
Dave Clarke
Los juegos infinitos generalmente se definen de modo que uno de los jugadores (generalmente el conocido como Eloise, Duplicator o Verifier, elija) ganará siempre que pueda hacer un movimiento válido en respuesta al otro jugador, que gana si él puede bloquearla Piense en una semántica de juego para bisimulación o incluso en una semántica de juego del concepto original de Turing de TM "sin círculo" y puede ver cómo esto podría ser una noción útil y significativa de "ganar".
Marc Hamann