Raciocínio sobre loops de terminação não determinísticos


10

Aqui está uma pergunta da "faixa B", se é que alguma vez houve. Resumo: a primeira coisa que penso quando tento dar uma semântica a programas não determinísticos resulta em uma semântica em que não posso provar coisas sobre loops que terminam apenas de forma não determinística. Certamente alguém descobriu o que fazer nessa situação, ou pelo menos apontou que é difícil, mas não sei como procurá-la (daí a tag "solicitação de referência").

fundo

Eu quero modelar uma linguagem while com não-determinismo. Acho que essa é a maneira óbvia (ou pelo menos ingênua) de modelar essa linguagem com um domínio de poder Smyth, mas me corrija se eu estiver errado. Modelaremos o significado de um comando nessa linguagem como uma função cujo domínio é o conjunto de estados e cujo código-fonte é o conjunto , em que é o elemento menos representativo da não terminação e é o conjunto de estados dos estados.P ( S ) = { } P ( S ) P ( S )SP(S)={}P(S)P(S)

Interpretamos comandos como mapas de states para o evento sem término ou para conjuntos de estados que representam possíveis resultados. é uma escolha não determinística.σ{σ1,σ2,}PQ

  • skipσ={σ}
  • x:=Eσ={σ[(Eσ)/x]}
  • abortσ=
  • if E then P else Qσ=Pσ se Eσ=true , caso contrário Qσ
  • PQσ= se Pσ= ou Qσ= , caso contrário, PσQσ
  • P;Qσ= se ou para alguns , caso contrárioPσ=Qτ=τPστPσQτ

Existe uma ordem parcial completa direcionada , em que para qualquer e se e forem conjuntos adequados e , e podemos estender isso para funções de para pointwise: se para cada , e é a função que mapeia todos os estados para .SSP(S)S1S2S1S2S1S2fSP(S)f1f2f1(σ)f2(σ)σf

O significado de um loop é é o limite superior mínimo da cadeia , onde se , caso contrário se ou para alguns , caso contrário . (Esta definição pressupõe que o I acabou de definir é Scott contínua, mas eu acho que é seguro para deixar isso de lado.)while E do Pσff(f)f(f(f))f(g)(σ)={σ}E(σ)=falsePσ=g(τ)=τPστPσg(τ)f

Questão

Considere este programa:

x:=0;
b:=true;
while b do
x:=x+2;
b:=falseb:=true

Intuitivamente, este é um loop que pode retornar qualquer número par positivo ou não terminar, e que corresponde ao que podemos provar sobre esse loop usando a pré-condição liberal mais fraca (é possível mostrar que é um loop invariante). No entanto, como o loop tem a capacidade de não terminar (podemos refinar a escolha não determinística pelo programa que sempre assume o ramo direito), o significado desse programa, dado qualquer estado inicial, é . (Menos informalmente: a função que mapeia qualquer estado em que é falso para si mesmo e qualquer estado em que é verdadeiro para é um ponto fixo de usado para definir o loop.)n.x=2nbbf

Isso significa que a semântica ingênua que propus não corresponde da maneira que espero ser capaz de raciocinar sobre os programas. Eu culpo minha semântica, mas não como corrigi-las.


4
Penso que, ao usar como o codomain do significado de um programa, você efetivamente desistiu de raciocinar qualquer coisa sobre um programa que possa divergir. Um pensamento ingênuo é usar , mas não sei se isso apresentará outro problema. {}P(S)P(S{})
Tsuyoshi Ito 11/07

Sim, você está absolutamente certo de que, olhando para o conjunto , já é aparente que a esperança se perde antes mesmo de chegarmos ao exemplo. Sua sugestão também me ocorreu, mas acho que você acaba com o mesmo problema neste exemplo, desde que a não interrupção em potencial seja modelada por not e, se escolhemos o último que interferiria com nossa capacidade de dar sentido a um loop como um ponto menos fixo da maneira usual. {}P(S)S{}{}
Rob Simmons

Você já viu a lógica dinâmica? A semântica é dada em termos de relações de estados para estados, e você pode usar a lógica para raciocinar sobre a correção parcial e total, ou seja, as propriedades dos cálculos que terminam e que todos os cálculos terminam com uma determinada propriedade.
9118 Dave Clarke

Eu não pensei sobre lógica dinâmica nesse cenário, mas vejo como isso pode ser relevante - verei o que Platzer e seus alunos pensam quando voltar a Pittsburgh.
Rob Simmons

Respostas:


10

[DB80] A análise de Hitchcock e Park das propriedades de terminação da recursão corresponde a uma análise semântica baseada na chamada interpretação das relações de Egli-Milner [Egl75, Plo76], que expressa um incondicionalismo errático . Essa noção captura que uma união não determinística de relações é correta se gerar pelo menos um cálculo que conduz ao resultado desejado (mesmo na presença de um cálculo não-determinante). Isso parece corresponder ao que você está tentando fazer.

Em seguida, caracterize o significado de uma instrução como uma função mapeando cada estado inicial para algum conjunto de estados não vazio, possivelmente contendo , de modo que seja rigoroso no sentido de que . A escolha não determinística entre as afirmações e é descrita pela função que mapeia cada estado inicial até a união dos resultados individuais . Assim, sempre que ouf S σ f S f S ( ) = { } S 1 S 2 σ f S 1 ( σ ) f S 2 ( σ ) S 1 S 2SfSσfSfS()={}S1S2σfS1(σ)fS2(σ)S1S2tem a possibilidade não-determinística de produzir um resultado indesejável, o mesmo acontece com a sua escolha não-determinística. Como os conjuntos resultantes de estados finais, obtém-se nesta análise o chamado conjunto de estados Egli-Milner:

}PE--M(S)={ sS | s é finito e não vazio, ou contém}

Por que subconjuntos infinitos de não são considerados conjuntos possíveis de estados finais neste modelo? Sob a suposição de que todos os blocos de construção básicos de termos relacionais produzem apenas conjuntos finitos e não vazios de possíveis estados finais, um conjunto infinito de possíveis estados finais só pode ser gerado quando uma computação infinita é possível. Poderá ser visto da seguinte forma. Estruture o conjunto de todos os cálculos possíveis, começando em um determinado estado como uma árvore com raiz e estados como nós. O conjunto de folhas é então exatamente o conjunto de possíveis estados finais alcançáveis ​​a partir de , excetoσ 0 σ 0 σ 0Sσ0σ0σ0, que pode estar ausente entre as folhas, mas é representado no conjunto de estados finais pelo fato de haver um caminho infinito na árvore. Pela suposição acima, e como somente a escolha finita e não determinística está disponível, essa árvore está se ramificando finitamente. Assim, existe apenas um número finito de folhas em qualquer profundidade finita. Consequentemente, um número infinito de possíveis estados finais só pode ser gerado na presença de uma computação infinita (uma aplicação do lema de König [Kön32]).

(PE--M(S),E--M) é um poset para definido por: para , s , t P E - M ( S )E--Ms,tPE--M(S)

sE--Mt=(ss{}t)(ss=t) .

Aqui, pode ser visto como um espaço reservado por meio do qual - conjuntos maiores podem ser gerados inserindo mais estados no lugar de . Portanto, é o menor elemento de . Além disso, o poset possui lubrificantes para cadeias . Da mesma forma, as funções estritas de a são parcialmente ordenadas pela extensão pontual de . Além disso, pelo menos essa função éE - H{ } ( P E - H ( S ) , E - H ) ( P E - H ( S ) , E - H ) ω S { } P E --M ( S ) E - M λ σ . { } ωE--M{}(PE--M(S),E--M)(PE--M(S),E--M)ωS{}PE--M(S)E--Mλσ.{} e cadeias lub de tais funções também existem.ω

JB de Bakker. Teoria matemática da correção do programa . Prentice Hall, 1980.

[Egl75] H Egli. Um modelo matemático para cálculos não determinísticos. Relatório técnico, ETH Zürich, 1975.

[Kön32] D König. Theorie der endlichen und unlichlichen Graphen. Relatório técnico, Leipzig, 1932.

[Plo76] GD Plotkin. Uma construção de domínio de poder. SIAM Journal on Computation , 5 (3): 452-487, 1976.

Isenção de responsabilidade: isso é tirado quase literalmente de um livro que eu co-autoria:

WP de Roever e K. Engelhardt. Refinamento de dados: métodos de prova orientados a modelos e sua comparação . Cambridge University Press, 1998.


4
A frase "isto é tirado quase verbatium de um livro que eu co-escrevi" provavelmente deveria ser prefixada com "Extra Awesomeness:" não "Disclaimer:" :-D. Obrigado, isso é muito útil.
Rob Simmons

Uma maneira de ver o não-determinismo (e da maneira que eu quero ver) é que é uma forma de subespecificação - um programa com uma escolha não-determinística é refinado pelo programa que sempre faz a primeira escolha, sempre faz a segunda escolha, ou (consulte o extenso trabalho de McIver e Morgan nessa área específica) o programa que faz uma escolha ou outra com probabilidade .5 . Assim, o loop que não determinística não termina é refinado pelo loop que nunca mais termina, e também pelo seu loop coin-flip que termina (com probabilidade 1)
Rob Simmons
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.