Académique Documents
Professionnel Documents
Culture Documents
SISTEMAS AXIOMÁTICOS
Um exemplo clássico de axioma é o Axioma da Igualdade, que nos diz que 𝑥 = 𝑥. Não é
difícil nos convencermos que isto é uma coisa óbvia e não necessita de prova.
1
LÓGICA DE FLOYD-HOARE
Um programa imperativo é descrito como uma tripla {𝑷} 𝑺 {𝑸}, onde 𝑃 é o estado inicial
(pré-condição), 𝑆 é o programa e 𝑄 é o estado final (pós-condição). Assim, um programa
imperativo permite transformar o estado inicial no estado final.
Para que um programa esteja correto (CORRETUDE TOTAL), precisamos garantir duas
coisas:
2
AXIOMA DA ATRIBUIÇÃO
Usado para provar que o comando de atribuição produz uma alteração correta de estado:
EXERCÍCIO TUTORIADO
(b) Usando somente o axioma acima, conseguiríamos verificar a correção parcial do programa
abaixo ?
3
AXIOMA DE FORTALECIMENTO DA PRÉ-CONDIÇÃO
Observem que, neste caso, temos que garantir a corretude de duas coisas: 𝑃 → 𝑃′ e
{𝑃′}𝐶 {𝑄}.
EXERCÍCIO TUTORIADO
4
AXIOMA DE ENFRAQUECIMENTO DA PÓS-CONDIÇÃO
Observem que, neste caso, temos que garantir a corretude de duas coisas: {𝑃}𝐶 {𝑄} 𝑄 →
𝑄.
EXERCÍCIO TUTORIADO
5
AXIOMA DO SEQUENCIAMENTO
Observem que, neste caso, temos que garantir a corretude de duas coisas: {𝑃}𝐶1 {𝑄}
{𝑄}𝐶2 {𝑅} .
EXERCÍCIO TUTORIADO
Verifique a corretude parcial do programa abaixo, que troca o conteúdo de duas variáveis,
utilizando os axiomas anteriores:
6
AXIOMA DA CONDIÇÃO
Observem que, neste caso, temos que garantir a corretude nos dois casos possíveis do
comando if: quando a condição S é verdadeira e quando a condição S é falsa.
Quando não houver uma ação a ser feita para o comando C2 (if sem else), utilizamos a
palavra SKIP no seu lugar. Neste caso, temos o seguinte axioma para SKIP:
EXERCÍCIO TUTORIADO
Verifique a corretude parcial do programa abaixo, que calcula o máximo de duas variáveis,
utilizando os axiomas anteriores:
7
AXIOMA DA REPETIÇÃO
O estado P é chamado invariante de laço (ou de loop). Trata-se de uma proposição que é
verdadeira antes da execução do laço, durante a sua execução e após a sua execução.
Normalmente, o invariante não é fornecido junto com o programa e deve-se achá-lo para
iniciar a prova de corretude.
EXERCÍCIO TUTORIADO
8
EXERCÍCIOS EXTRA-CLASSE
(a) { Y = 2 } X:=2 { Y = X }
(c) { Y = a }
IF X > 0
THEN Y := Y + X
ELSE Y := Y – X
FI
{Ya}
(d) {T}
R:=X;
Q:=0;
WHILE YR DO
R:=R-Y
Q:=Q+1
OD
{ R < Y e X=R+YxQ }
2. O sistema axiomático de Floyd-Hoare pode ser estendido para conter o comando FOR,
cujo axioma é mostrado abaixo:
b. Aplique este axioma para mostrar que o programa abaixo está correto
parcialmente.
9
3. O sistema axiomático de Floyd-Hoare pode ser estendido para atribuições com vetores,
cujo axioma é mostrado abaixo:
a. Descreva, informalmente, o que devemos provar para a atribuição com vetores esteja
correta.
b. Aplique este axioma para mostrar que o programa abaixo está correto parcialmente.
10