Suponha que temos uma linguagem simples que consiste nos termos:
- se são termos, o mesmo acontece com
Agora assuma as seguintes regras de avaliação lógica:
Suponha que também adicionemos a seguinte regra descolada:
Para esta linguagem simples, com as regras de avaliação fornecidas, desejo provar o seguinte:
Teorema: Se e , existe algum termo tal que e .
Estou provando isso por indução na estrutura de . Aqui está a minha prova até agora, tudo funcionou bem, mas estou preso no último caso. Parece que a indução na estrutura de não é suficiente, alguém pode me ajudar?
Prova. Por indução em , separaremos todas as formas que pode assumir:
- é uma constante, nada a provar, pois uma forma normal não avalia nada.
- se true então else . (a) ambas as derivações foram feitas com a regra E-IfTrue. Nesse caso, , então não há nada a provar. (b) uma derivação foi feita com a regra E-IfTrue, a outra com a regra E-Funny. Suponha que foi feito com o E-IfTrue, o outro caso é comprovado de forma equivalente. Agora sabemos que . Também sabemos que se verdadeiro, então else e que existe alguma derivação (a premissa). Se agora escolhermos , concluiremos o caso.
- r 2 r 3 se falso, então else . Equivalentemente comprovado como acima.
- r 1 r 2 r 3 r 1 ≠ s = r ′ 1 r 2 r 3 t = r ″ 1 r 2 r 3 r 1 → r ′ 1 r 1 → r ″ 1 r ‴ 1 r ′ 1 → r ‴ 1 r ″ 1 → r ‴ 1 u = ‴ se então else com verdadeiro ou falso. (a) ambas as derivações foram feitas com a regra E-If. Agora sabemos que se então else e se então else . Sabemos também que existe deriviations e (nas instalações). Agora podemos usar a hipótese de indução para dizer que existe algum termo tal quee . Agora concluímos o caso dizendo se então else e percebendo que e pela regra E-If. (b) uma derivação foi feita pela regra E-If e uma pela regra E-Funny. R2R3s→ut→u
Neste último caso, em que uma derivação foi feita pelo E-If e uma pelo E-Funny é o caso que estou perdendo ... Parece que não consigo usar as hipóteses.
A ajuda será muito apreciada.
Respostas:
Ok, então vamos considerar o caso em que , foi derivado pela aplicação da regra E-If e foi obtido aplicando a regra E-Funny: Então, que e onde . s t s = i fr=ift1thent2elset3 s t t 1 → t ′ 1 t = i fs=ift′1thent2elset3 t1→t′1 t 2 → t ′ 2t=ift1thent′2elset3 t2→t′2
O que estamos procurando é . segue a regra E-Funny e segue a regra E-If.u = i fu s → u t → uu=ift′1thent′2elset3 s→u t→u
fonte
Um pouco de terminologia pode ajudar se você quiser pesquisar isso: essas regras estão reescrevendo regras , elas não têm nada a ver com sistemas de tipos¹. A propriedade que você está tentando provar se chama confluência ; mais especificamente, é uma forte confluência : se um termo pode ser reduzido de maneiras diferentes em uma etapa, ele pode convergir de volta na próxima etapa. Em geral, confluência permite que haja qualquer número de etapas, e não apenas um: se e então há de tal modo que e - se um termo puder ser reduzido de maneiras diferentes, não importa o quanto eles divergam, eles poderão eventualmente voltar a convergir.r → * t u s → * u t → * ur→∗s r→∗t u s→∗u t→∗u
A melhor maneira de provar uma propriedade dessas regras de reescrita definidas indutivamente é pela indução sobre a estrutura da derivação da redução, em vez da estrutura do termo reduzido. Aqui, ambos funcionam, porque as regras seguem a estrutura do termo esquerdo, mas o raciocínio sobre as regras é mais simples. Em vez de mergulhar no termo, você adota todos os pares de regras e vê qual termo pode ser o lado esquerdo de ambos. Neste exemplo, você obterá os mesmos casos no final, mas um pouco mais rápido.
No caso de problemas, um lado reduz a parte "se" e o outro lado reduz a parte "então". Não há sobreposição entre as duas partes que mudam ( em [E-If], em [E-IfFunny]) e não há restrições em em [E-If] ou em em [E-IfFunny]. Portanto, quando você tem um termo ao qual ambas as regras se aplicam - que devem ter o formato , você pode escolher para aplicar as regras em qualquer ordem:t 2 t 2 t 1 it1 t2 t2 t1 ifr1thenr2elser3
Sometimes Às vezes, você pode ver tipos e reescrever juntos, mas no fundo eles são conceitos ortogonais.
fonte