Semântica de jogos para predicados coindutivos

8

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 Acorresponde ao maior ponto fixo do functor .F(X)=(X+1)A

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.R:⊆A×AR

Considere as seguintes coberturas de predicado coindutivo (definidas corecursivamente):coversTree A×Tree A

covers(α,β)= aA if α(a) then bB such that aRb and β(b) and covers(α(a),β(b)) .

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.

Dave Clarke
fonte
Você já examinou as abordagens semânticas de jogos para a bisimulação? Com esses, essencialmente Verifier vence exatamente quando o jogo é infinito, ou seja, Falsifier não conseguiu enganá-la.
Marc Hamann 29/09
De fato, a bisimulação, a verificação de modelos e outros jogos de Colin Sterling devem me ajudar. Seu livro Propriedades Modais e Temporais de Processos tem material semelhante, embora com menos detalhes.
Dave Clarke

Respostas:

4

Vicious Circles de Barwise e Moss é uma cornucópia de raciocínio co-algébrico / co-indutivo e inclui material em jogos co-indutivos.

Não tenho certeza se isso o ajudará em sua necessidade específica, mas pode ser a fonte de alguma inspiração nessa linha de raciocínio.

Editar (x2):

Eu acho que você pode seguir uma abordagem modificada do estilo Ehrenfeucht-Fraïssé como esta: O falsificador consegue selecionar qualquer item do fluxo / disjunção / conjunção. O Verifier precisa mostrar que esse item deve ser um gato preto.

(Você pode colocar restrições de pedidos ou número de opções no Falsifier sem perda de generalidade para um conjunto finito de regras coindutoras.)

Se você pensa em coindução apenas como indução sem um caso base, é óbvio que a única regra de (co) indução que você possui blackCatsé cat == BlackCat, então o que mais um gato individual poderia ter nesse fluxo? Qualquer gato que o Falsifier seleciona terá que estar em conformidade com essa regra, então o Verifier vence.

Obviamente, isso seria dimensionado para regras coindutivas mais numerosas e complexas, onde o "desafio" para o Verifier passa a ser a escolha da regra apropriada para qualquer item que o Falsifier escolher.

A bisimulação, a verificação de modelos e outros jogos de Colin Sterling devem ajudá-lo. Seu livro Propriedades Modais e Temporais de Processos tem material semelhante, embora com menos detalhes.

Marc Hamann
fonte
Obrigado Mark. Certamente há algum material no livro para me ajudar. Bem, mais do que alguns.
Dave Clarke
Eu quis dizer "Marc".
Dave Clarke
Mais uma vez obrigado Marc. O problema que eu quero evitar é ter o falsificador capaz de pular no meio do fluxo para encontrar o contra-exemplo. Eles precisam jogar o jogo passo a passo. O que me falta é a condição vencedora. Agora percebo que meu exemplo é muito pequeno. Eu vou chegar com um maior em breve.
Dave Clarke
Como eu aludi no meu comentário entre parênteses, acho que você pode insistir que o falsificador seleciona a cabeça do fluxo. Nesse caso, você provavelmente deseja deixá-lo escolher k o número de turnos que eles jogam. O trabalho de Verifier é mostrar que, para todos os k, ela sempre pode verificar a escuridão. No entanto, aguardamos ansiosamente seu exemplo expandido, em vez de bombardeá-lo com coisas que você já deve ter pensado. ;-)
Marc Hamann
1

Como nitpick, você quer dizer em data Stream a = ...vez de data Stream a :: ....

Seu allBlacks é apenas um predicado semidecidável; portanto, existe uma estratégia que leva a um jogo sem fim, no qual você continua jogando o BlackCat. Do ponto de vista da teoria do domínio, o cálculo não é produtivo, pois não há aumento de informações ao consumir um elemento do fluxo quando ele é igual ao BlackCat. Por essa razão, não acho que o predicado possa realmente ser chamado de coindutor, pode? Minha suspeita é que isso é o que subjaz à sua confusão sobre as condições de vitória: o empate indefinido é um empate.

Per Vognsen
fonte
Código agora corrigido. Eu acho que é possível especificar completamente um jogo para esse predicado, mas não conheço os detalhes. De qualquer forma, incorporarei algumas de suas dúvidas na pergunta.
Dave Clarke
@supercooldave: Claro, você pode especificar completamente o significado da teoria dos jogos para este programa, mas os jogos podem durar para sempre. Um jogo que não termina sempre conta como empate; empate é o equivalente ao jogo da teoria de domínio .
Por Vognsen 27/09/10
Isto não é sempre verdade. Pelo que entendi, as várias condições de aceitação de Büchi, Müller, Rabin e Streett e a condição de paridade tornam todos os jogos infinitos determinados, o que significa que não há empate. Ainda estou lidando com essas noções, admito.
Dave Clarke
Jogos infinitos são geralmente definidos para que um dos jogadores (normalmente conhecido como Eloise, Duplicador ou Verificador, faça a sua escolha) ganhe, desde que ele sempre possa fazer uma jogada válida em resposta ao outro jogador, que vencer se ele pode bloqueá-la. Pense em uma semântica de jogo para bisimulação ou até mesmo em uma semântica de jogo do conceito original de Turing de TMs "sem círculo" e você pode ver como isso pode ser uma noção útil e significativa de "vencer".
Marc Hamann