Sei sulla pagina 1di 8

UNB – UNIVERSIDADE DE BRASILIA

LÓGICA COMPUTACIONAL;

:: TRABALHO ::
PROVA DA TORRE DE HANOI ATRAVÉS DO SISTEMA PVS.

ALUNO: 0275459 - JOSE LAURIVAN DA COSTA.


---------------------------------------------------------------------------------------------------------

Starting pvs-allegro -qq ...


Allegro CL Enterprise Edition
8.1 [Linux (x86)] (Jul 22, 2008 3:35)
Copyright (C) 1985-2007, Franz Inc., Oakland, CA, USA. All Rights Reserved.

This dynamic runtime copy of Allegro CL was built by:


[TC8102] SRI International - Lynn Bliss

Optimization settings: safety 1, space 1, speed 3, debug 1.


For a complete description of all compiler switches given the
current optimization settings evaluate (explain-compiler-settings).
---
Current reader case mode: :case-sensitive-lower

pvs(1):
pvs(2):
Installing rewrite rule singleton_rew

moves_is_exp :

|-------
{1} FORALL (x: posint): moves(x) = expt(2, x) - 1

Rerunning step: (induct x)


Inducting on x on formula 1,
this yields 3 subgoals:
moves_is_exp.1 :

|-------
{1} x!1 > 0
{2} moves(x!1) = expt(2, x!1) - 1

A fórmula indicada deve ser universalmente quantificada, como formula conseqüente. O nome
da variável x deve ser quantificada no nível mais externo desta fórmula. A variável vinculado
deve ser do tipo bound, ou seja, deve incluir, como um supertipo natural ou um tipo de dados
PVS abstrata para o esquema de indução esquema para ser selecionado automaticamente.
Rerunning step: (typepred x!1)
Adding type constraints for x!1,
this simplifies to:
moves_is_exp.1 :

{-1} x!1 > 0


|-------
[1] x!1 > 0
[2] moves(x!1) = expt(2, x!1) - 1

which is trivially true.

This completes the proof of moves_is_exp.1.

moves_is_exp.2 :

|-------
{1} 0 > 0 IMPLIES moves(0) = expt(2, 0) - 1

Se a expressão é uma lista de expressões e1;::: pt, então para cada um EI, e para cada predicado
typeconstraint p do tipo em ei, uma fórmula antecedente da forma p (EI) é introduzido. Um
predicado P é um predicado de tipo de restrição em um tipo fx: JQ (x) g onde se quer pq ou p, é um
tipo predicado de restrição.

Rerunning step: (prop)


Applying propositional simplification,
this simplifies to:
moves_is_exp.2 :

{-1} 0 > 0
|-------
{1} moves(0) = expt(2, 0) - 1

Realiza simplificação proposicional sobre o objeto atual retornando apenas as submetas que não são
axiomas proposicionais e não tem nenhum conectivos proposicionais de nível superior. Usando
prop indiscriminadamente pode levar a uma grande combinatória de casos provocados por dividir
conjunções irrelevante. Este, por sua vez pode levar a uma série de submetas exigindo provas
idênticas para prop.

Rerunning step: (grind)


Trying repeated skolemization, instantiation, and if-lifting,

This completes the proof of moves_is_exp.2.

moves_is_exp.3 :

|-------
{1} FORALL j:
(j > 0 IMPLIES moves(j) = expt(2, j) - 1) IMPLIES
j + 1 > 0 IMPLIES moves(j + 1) = expt(2, j + 1) - 1
Aqui se faz um checagerm geral que como estratégia é freqüentemente utilizada para completar
automaticamente uma ramo de prova ou para aplicar todas as simplificações óbvias até que eles não
se apliquem mais. A primeira estratégia aplicada é install: para instalar e reescreve as teorias dadas
e reescrever as regras, juntamente com todas as definições relevantes dos dados subgoal. Em
seguida,
aplica bddsimp seguido por afirmação para realizar o primeiro nível de simplificação.

Rerunning step: (skolem!)


Skolemizing,
this simplifies to:
moves_is_exp.3 :

|-------
{1} (j!1 > 0 IMPLIES moves(j!1) = expt(2, j!1) - 1) IMPLIES
j!1 + 1 > 0 IMPLIES moves(j!1 + 1) = expt(2, j!1 + 1) - 1
Para a fórmula do atual subseqüente indicada por um parametro ou é uma antecedente fórmula da
forma (∃ x 1, xn:... A) ou uma fórmula conseqüente da forma (∀ x 1, xn:... A), e constantes é uma
lista de novos identificadores da forma (c 1 ... cn), então a regra Skolem gera um subgoal onde a
fórmula indicada foi substituído por um [c 1 / x 1. . . , c / n] x n. Quando o parametro é *, a primeira

fórmula sequente adequada (ou seja, quer uma fórmula ou um antecedente existencial de uma
fórmula universal conseqüente com n variáveis de ligação) é escolhido para o eliminição do
quantificador.

Rerunning step: (prop)


Applying propositional simplification,
this yields 2 subgoals:
moves_is_exp.3.1 :

{-1} moves(j!1) = expt(2, j!1) - 1


{-2} j!1 + 1 > 0
|-------
{1} moves(j!1 + 1) = expt(2, j!1 + 1) - 1

Realiza simplificação proposicional sobre o objeto atual retornando apenas as submetas que não são
axiomas proposicionais e não tem nenhum conectivos proposicionais de nível superior. Usando
prop indiscriminadamente pode levar a uma grande combinatória de casos provocados por dividir
conjunções irrelevante. Este, por sua vez pode levar a uma série de submetas exigindo provas
idênticas para prop.

Rerunning step: (expand moves 1)


Expanding the definition of moves,
this simplifies to:
moves_is_exp.3.1 :

[-1] moves(j!1) = expt(2, j!1) - 1


[-2] j!1 + 1 > 0
|-------
{1} IF j!1 = 0 THEN 1 ELSE 1 + 2 * moves(j!1) ENDIF = expt(2, 1 + j!1) - 1
Rerunning step: (typepred j!1)
Adding type constraints for j!1,
this simplifies to:
moves_is_exp.3.1 :

{-1} j!1 >= 0


[-2] moves(j!1) = expt(2, j!1) - 1
[-3] j!1 + 1 > 0
|-------
[1] IF j!1 = 0 THEN 1 ELSE 1 + 2 * moves(j!1) ENDIF = expt(2, 1 + j!1) - 1

Se a expressão é uma lista de expressões e1;::: pt, então para cada um EI, e para cada predicado
typeconstraint p do tipo em ei, uma fórmula antecedente da forma p (EI) é introduzido. Um
predicado P é um predicado de tipo de restrição em um tipo fx: JQ (x) g onde se quer pq ou p, é um
tipo predicado de restrição

Rerunning step: (case j!1=0)


Case splitting on
j!1=0,
this yields 2 subgoals:
moves_is_exp.3.1.1 :

{-1} j!1 = 0
[-2] j!1 >= 0
[-3] moves(j!1) = expt(2, j!1) - 1
[-4] j!1 + 1 > 0
|-------
[1] IF j!1 = 0 THEN 1 ELSE 1 + 2 * moves(j!1) ENDIF = expt(2, 1 + j!1) - 1

Se a corrente subseqüente é da forma Γ |- Δ, então a regra (caso A 1 ... A n)


gera subgoals(submetas).

Rerunning step: (assert)


Simplifying, rewriting, and recording with decision procedures,
this simplifies to:
moves_is_exp.3.1.1 :

[-1] j!1 = 0
[-2] j!1 >= 0
[-3] moves(j!1) = expt(2, j!1) - 1
{-4} 1 + j!1 > 0
|-------
{1} 1 = expt(2, 1 + j!1) - 1

A regra é afirmar uma combinação de registro, simplificar, beta e reescrever. O uso de


procedimentos de decisão para as igualdades e desigualdades lineares é talvez a parte mais
significativa e generalizada. Estes procedimentos são invocados para demonstrar teoremas trivial,
para simplificar expressões complexas (nomeadamente definições), e até mesmo para realizar a as
condições. Estes procedimentos de decisão, inicialmente devido à Shostak, empregam encerramento
de raciocínio de igualdade, e também realizar raciocínio aritmético linear sobre os números naturais

e reais.
Rerunning step: (replace -1)
Replacing using formula -1,
this simplifies to:
moves_is_exp.3.1.1 :

[-1] j!1 = 0
{-2} 0 >= 0
{-3} moves(0) = expt(2, 0) - 1
{-4} 1 + 0 > 0
|-------
{1} 1 = expt(2, 1 + 0) - 1

A regra de substituição é geralmente usado para reescrever alguns seleção das fórmulas
na atual subsequente usando a fórmula de igualdade de um antecedente da forma L = r.
A fórmula de igualdade para ser usado é indicado pelo argumento. Os alvos das regravações estão
listados no argumento. Quando a direção do argumento é RL (denotando "da direita para a esquerda
"), as ocorrências alvo de r na sequentes são reescrito para l. Caso contrário, quando o parâmetro de
direção é diferente do RL, as ocorrências alvo de l são reescritas para r.

Rerunning step: (expand expt 1)


Expanding the definition of expt,
this simplifies to:
moves_is_exp.3.1.1 :

[-1] j!1 = 0
[-2] 0 >= 0
[-3] moves(0) = expt(2, 0) - 1
[-4] 1 + 0 > 0
|-------
{1} 1 = 2 * expt(2, 0) - 1

Expande e simplifica a definição do nome dado a uma ocorrência. Se a ocorrência não é dada, então
todas as instâncias de definição são expandidas. A ocorrência é dado um número n referentes à
ocorrência n da função contando os símbolo da esquerda, ou como uma lista de tais números. Se a
simplificação é t, então a expansão qualquer dentro de uma fórmula subseqüentes ocorre apenas se a
forma que o expandiu pode ser simplificado (por meio dos procedimentos de decisão). Se
simplificação for necessária para controlar a expansão infinita. no caso. expandir é usado
repetidamente dentro de uma mesma estratégia.

Rerunning step: (expand expt 1)


Expanding the definition of expt,
this simplifies to:
moves_is_exp.3.1.1 :

[-1] j!1 = 0
[-2] 0 >= 0
[-3] moves(0) = expt(2, 0) - 1
[-4] 1 + 0 > 0
|-------
{1} TRUE

which is trivially true.


This completes the proof of moves_is_exp.3.1.1.

moves_is_exp.3.1.2 :

[-1] j!1 >= 0


[-2] moves(j!1) = expt(2, j!1) - 1
[-3] j!1 + 1 > 0
|-------
{1} j!1 = 0
[2] IF j!1 = 0 THEN 1 ELSE 1 + 2 * moves(j!1) ENDIF = expt(2, 1 + j!1) - 1

Expande e simplifica a definição do nome dado a uma ocorrência. Se a ocorrência não é dada, então
todas as instâncias de definição são expandidas. A ocorrência é dado um número n referentes à
ocorrência n da função contando os símbolo da esquerda, ou como uma lista de tais números. Se a
simplificação é t, então a expansão qualquer dentro de uma fórmula subseqüentes ocorre apenas se a
forma que o expandiu pode ser simplificado (por meio dos procedimentos de decisão). Se
simplificação for necessária para controlar a expansão infinita. no caso. expandir é usado
repetidamente dentro de uma mesma estratégia

Rerunning step: (assert)


Simplifying, rewriting, and recording with decision procedures,
this simplifies to:
moves_is_exp.3.1.2 :

[-1] j!1 >= 0


[-2] moves(j!1) = expt(2, j!1) - 1
{-3} 1 + j!1 > 0
|-------
[1] j!1 = 0
{2} 1 + 2 * moves(j!1) = expt(2, 1 + j!1) - 1

A regra é afirmar uma combinação de registro, simplificar, beta e reescrever. O uso de


procedimentos de decisão para as igualdades e desigualdades lineares é talvez a parte mais
significativa e generalizada. Estes procedimentos são invocados para demonstrar teoremas trivial,
para simplificar expressões complexas (nomeadamente definições), e até mesmo para realizar a as
condições. Estes procedimentos de decisão, inicialmente devido à Shostak, empregam encerramento
de raciocínio de igualdade, e também realizar raciocínio aritmético linear sobre os números naturais

e reais.

Rerunning step: (expand expt 2)


Expanding the definition of expt,
this simplifies to:
moves_is_exp.3.1.2 :

[-1] j!1 >= 0


[-2] moves(j!1) = expt(2, j!1) - 1
[-3] 1 + j!1 > 0
|-------
[1] j!1 = 0
{2} 1 + 2 * moves(j!1) = 2 * expt(2, j!1) - 1
Expande e simplifica a definição do nome dado a uma ocorrência. Se a ocorrência não é dada, então
todas as instâncias de definição são expandidas. A ocorrência é dado um número n referentes à
ocorrência n da função contando os símbolo da esquerda, ou como uma lista de tais números. Se a
simplificação é t, então a expansão qualquer dentro de uma fórmula subseqüentes ocorre apenas se a
forma que o expandiu pode ser simplificado (por meio dos procedimentos de decisão). Se
simplificação for necessária para controlar a expansão infinita. no caso. expandir é usado
repetidamente dentro de uma mesma estratégia

Rerunning step: (replace -2)


Replacing using formula -2,
this simplifies to:
moves_is_exp.3.1.2 :

[-1] j!1 >= 0


[-2] moves(j!1) = expt(2, j!1) - 1
[-3] 1 + j!1 > 0
|-------
[1] j!1 = 0
{2} 1 + 2 * (expt(2, j!1) - 1) = 2 * expt(2, j!1) - 1

A regra de substituição é geralmente usado para reescrever alguns seleção das fórmulas
na atual subsequente usando a fórmula de igualdade de um antecedente da forma L = r.
A fórmula de igualdade para ser usado é indicado pelo argumento. Os alvos das regravações estão
listados no argumento. Quando a direção do argumento é RL (denotando "da direita para a esquerda
"), as ocorrências alvo de r na sequentes são reescrito para l. Caso contrário, quando o parâmetro de
direção é diferente do RL, as ocorrências alvo de l são reescritas para r.

Rerunning step: (assert)


Simplifying, rewriting, and recording with decision procedures,

This completes the proof of moves_is_exp.3.1.2.

This completes the proof of moves_is_exp.3.1.

moves_is_exp.3.2 :

{-1} j!1 + 1 > 0


|-------
{1} j!1 > 0
{2} moves(j!1 + 1) = expt(2, j!1 + 1) - 1

A regra é afirmar uma combinação de registro, simplificar, beta e reescrever. O uso de


procedimentos de decisão para as igualdades e desigualdades lineares é talvez a parte mais
significativa e generalizada. Estes procedimentos são invocados para demonstrar teoremas trivial,
para simplificar expressões complexas (nomeadamente definições), e até mesmo para realizar a as
condições. Estes procedimentos de decisão, inicialmente devido à Shostak, empregam encerramento
de raciocínio de igualdade, e também realizar raciocínio aritmético linear sobre os números naturais

e reais.

Rerunning step: (typepred j!1)


Adding type constraints for j!1,
this simplifies to:
moves_is_exp.3.2 :

{-1} j!1 >= 0


[-2] j!1 + 1 > 0
|-------
[1] j!1 > 0
[2] moves(j!1 + 1) = expt(2, j!1 + 1) - 1

Se a expressão é uma lista de expressões e1;::: pt, então para cada um EI, e para cada predicado
typeconstraint p do tipo em ei, uma fórmula antecedente da forma p (EI) é introduzido. Um
predicado P é um predicado de tipo de restrição em um tipo fx: JQ (x) g onde se quer pq ou p, é um
tipo predicado de restrição.

Rerunning step: (grind)


moves rewrites moves(1 + j!1)
to 1
expt rewrites expt(2, j!1)
to 1
expt rewrites expt(2, 1 + j!1)
to 2
Trying repeated skolemization, instantiation, and if-lifting,

Aqui se faz um checagerm geral que como estratégia é freqüentemente utilizada para completar
automaticamente uma ramo de prova ou para aplicar todas as simplificações óbvias até que eles não
se apliquem mais. A primeira estratégia aplicada é install: para instalar e reescreve as teorias dadas
e reescrever as regras, juntamente com todas as definições relevantes dos dados subgoal. Em
seguida,
aplica bddsimp seguido por afirmação para realizar o primeiro nível de simplificação.

This completes the proof of moves_is_exp.3.2.

This completes the proof of moves_is_exp.3.

Q.E.D.

Run time = 1.55 secs.


Real time = 3.40 secs.

nil
pvs(24):
Installing rewrite rule singleton_rew

Potrebbero piacerti anche