Alguém conhece algum trabalho sobre semântica de jogos para predicados coindutivos?
Um predicado coindutivo é aquele em que o próprio predicado é chamado no corpo do predicado, e estamos assumindo que o significado do predicado é o maior ponto fixo da definição subjacente. Esse predicado será definido sobre uma estrutura de dados infinita, como um fluxo ou uma árvore infinita ou um sistema de transição rotulado e assim por diante.
Um exemplo excessivamente simples é o seguinte (em Haskell):
data Cat = BlackCat | WhiteCat
data Stream a = Stream a (Stream a)
allBlacks :: Stream Cat -> Bool
allBlacks (Stream cat rest) = cat == BlackCat && allBlacks rest
Eu posso definir o fluxo de todos os gatos pretos como:
blackCats :: Stream Cat
blackCats = Stream BlackCat blackCats
e use a coindução para provar:
allBlacks blackCats
Pode-se pensar em um predicado coindutor como uma conjunção ou disjunção infinita, simplesmente imaginando que ele é desenrolado completamente. A semântica de jogos nesse cenário seria direta: para uma conjunção infinita, o falsificador precisa selecionar qual conjunto falsificar para ganhar o jogo; para uma disjunção infinita, o Verificador precisa selecionar qual disjunção satisfazer para vencer o jogo.
Existe, no entanto, uma ordem natural em 'avaliar' o predicado coindutor que é ignorado quando considerado como uma conjunção ou disjunção infinita, e eu gostaria que essa ordem fosse capturada na semântica do jogo, ou seja, que o jogo prossiga jogando cada disjuntivo / conjunto por sua vez.
Um problema adicional que tenho é entender qual condição vencedora usar para capturar a natureza infinita do predicado. Ou, em termos leigos: como sei que não existe gato branco nesse suposto fluxo infinito de gatos pretos - poderia ser apenas depois do ponto em que parei de procurar?
exemplo adicional
Considere o seguinte tipo de dados (novamente em Haskell):
data Tree a = Tree (a -> Maybe (Tree a))
Tree A
corresponde ao maior ponto fixo do functor .
Agora vamos supor que existe alguma relação . Isso não tem significado intrínseco e é usado apenas para formular o seguinte predicado coindutor. Pensar em como é suficiente.
Considere as seguintes coberturas de predicado coindutivo (definidas corecursivamente):Tree A
Tree A
.
Estou procurando um formalismo para expressar esses predicados em termos de semântica da teoria dos jogos. Um link para o trabalho existente seria muito apreciado. A principal coisa que estou tendo problemas para entender é a condição vencedora (conforme discutido em alguns dos comentários abaixo). Mesmo que o jogo dure para sempre, jogadas infinitas não constituem empate.