teoria da computação verificaÇÃo de equivalÊncia forte de programas fabrício dias...

65
Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias [email protected] UNIPÊ – Centro Universitário de João Pessoa Curso de Ciências da Computação

Upload: internet

Post on 17-Apr-2015

129 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Teoria da ComputaçãoVERIFICAÇÃO DE EQUIVALÊNCIA

FORTE DE PROGRAMAS

Fabrício Dias

[email protected]

UNIPÊ – Centro Universitário de João PessoaCurso de Ciências da Computação

Page 2: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Agenda

Instruções rotuladas compostas Definições Operações Exemplo

Page 3: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Possuem apenas um formato, diferente das instruções rotuladas, que podem ter dois formatos: operação e teste.

Page 4: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Definição: Uma instrução rotulada composta, é uma seqüencia de símbolos da forma:

(Suponha F e G identificadores de operação e T identificador de teste)

r1 : Se T então faça F vá_para r2 senão faça G

vá_para r3

r2 e r

3 são ditos rótulos sucessores de r

1;

r1 é dito rótulo antecessor de r

2 e r

3.

Page 5: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Instrução rotulada Operação

r1: faça F vá_para r

2

Teste

r1: se T então vá_para r

2 senão vá_para r

3

Instrução rotulada composta r

1: se T então faça F vá_para r

2 senão faça G vá_para

r3

Page 6: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Definição: Um Programa Monolítico com Instruções Rotuladas Compostas P é um par ordenado P = (I, r) no qual: I = Conjunto das instruções Rotuladas Compostas, o qual

é finito; R = Rótulo inicial o qual distingue a instrução rotulada

inicial em I.

Page 7: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Observações: Não existem duas instruções diferentes

com um mesmo rótulo;

Rótulo Final é um rótulo referenciado por

alguma instrução o qual não é associado a

qualquer instrução rotulada.

Page 8: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas Definição:

Considerando-se um único identificador de teste,

uma instrução rotulada composta da forma:

r1: se T então faça F vá_para r

2

senão faça G vá_para r3

Pode ser abreviada para:

r1: (F, r

2) , (G, r

3)

T = verdade T = falso

Page 9: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Algoritmo: Fluxograma → Rotuladas Compostas

Os componentes elementares de partida, parada

e operação de um fluxograma são denominados

de Nó.

Page 10: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Algoritmo: Fluxograma → Rotuladas Compostas Algoritmo para traduzir um fluxograma P para um

programa monolítico P' constituído por instruções

rotuladas compostas:

Rotulação de nós Instruções rotuladas compostas

Page 11: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Rotulação de Nó Rotula-se cada nó do fluxograma Suponha que exista um único componente

elementar de parada, associado ao identificador ν (palavra vazia)

O rótulo correspondente ao nó partida é o Rótulo Inicial do programa P’.

Page 12: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

A construção de uma instrução rotulada composta

parte do nó partida e segue o caminho do

fluxograma Teste

Operação

Parada

Testes encadeados

Testes encadeados em ciclos infinitos.

Page 13: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Teste: Para um teste, a correspondente instrução rotulada composta é:

r1: (F, r

2), (G, r

3)

Page 14: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Operação: Para uma operação, a correspondente instrução rotulada composta é:

r1: (F, r

2), (F, r

2)

Page 15: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Parada: Para uma parada, a correspondente instrução rotulada composta é:

r: (parada, ), (parada, )

Page 16: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Testes encadeados: No caso de testes encadeados, segue-se o fluxo até que seja encontrado um nó, resultando na seguinte instrução rotulada composta:

r1: (F, r2), (G, r3)

Page 17: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Teste encadeados em ciclos infinitos: Para um ciclo infinito determinado por testes encadeados, a correspondente instrução rotulada composta é:

r1: (F, r

2), (ciclo, ω)

Neste caso, deve ser incluída, adicionalmente, uma instrução rotulada composta correspondente ao ciclo infinito: ω: (ciclo, ω), (ciclo, ω)

Page 18: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Testes encadeados em ciclo infinito:

r1: (F, r2), (ciclo, ω)

Page 19: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Exemplo: Considere o programa monolítico especificado na

forma de fluxograma cujos nós já estão rotulados.

Definir o correspondente programa com

instruções rotuladas compostas.

Page 20: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

20

Page 21: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

21

Teste

Page 22: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

22

Teste

Page 23: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

23

Teste

Page 24: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

24

Teste

Page 25: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

25

Testes Encadeados em Ciclo Infinito.

Page 26: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

26

Teste

Parada

Page 27: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

27Operação

Page 28: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

28

Page 29: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Instruções rotuladas compostas

Observações: O rótulo 2, 4, 7 e ω são sucessores deles mesmos

Existem dois caminhos no fluxograma que atingem o

nó parada. Entretanto, somente um é representado

no conjunto de instruções rotuladas compostas. O

segundo caminho é impossível

Na instrução rotulada por 7, ocorre um clico infinito.

Page 30: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência forte de programas monolíticos

Equivalência forte: União disjunta A união disjunta de conjuntos garante que todos

os elementos dos conjuntos componentes constituem o conjunto resultante, mesmo que possuam a mesma identificação.

Page 31: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência forte de programas monolíticos

Equivalência Forte: União disjunta Dados os conjuntos:

A = {a, x} e B = {b, x}. O conjunto resultante da união disjunta é:

{a, xA, b, xB}

Page 32: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência forte de programas monolíticos

Equivalência forte: união disjunta Sejam:

Q = (IQ, q) e R = (I

R, r) dois programa monolíticos

especificados usando instruções rotuladas compostas ;

IQ

– instruções rotuladas compostas de Q

IR

– instruções rotuladas compostas de R

Pq = (I, q) e P

r = (I, r) programas monolíticos onde

I é o conjunto resultante da união disjunta de IQ e I

R.

Então: Pq ≡ P

R se, e somente se, Q ≡ R

Page 33: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência forte de programas monolíticos

Definições Cadeia de conjuntos Cadeia finita de conjuntos Limite de cadeia finita de conjuntos

Page 34: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Definições

Uma seqüência de conjuntos A0A

1... é dita:

1. uma Cadeia de Conjuntos se, para qualquer k ≥ 0: A

k A

k+1

2. uma Cadeia Finita de Conjuntos é uma cadeia de conjuntos onde existe n, para todo k ≥ 0, tal que: A

n = A

n+k

3. o Limite da Cadeia Finita de Conjuntos é: lim A

k = A

n

Page 35: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Identificação de símbolos infinitos

Partir da instrução de parada, rotulada por , determinando os seus antecessores

Por exclusão, uma instrução que não é antecessor da parada determina um ciclo infinito.

Page 36: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Algoritmo para identificação de ciclos infinitos

Seja I um conjunto de n instruções rotuladas compostas;

Seja A0A

1... uma seqüência de conjuntos de

rótulos indutivamente definida como segue: A

0 = { }

Page 37: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Algoritmo para identificação de ciclos infinitos

Ak+1 = Ak {r | r é rótulo de instrução antecessora

de alguma instrução rotulada por Ak}

Então A0A1... é uma cadeia finita de conjuntos, e,

para qualquer rótulo r de instrução de I, tem-se que (I, r) ≡ (I, ω) se e somente se r lim A

k

Page 38: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Algoritmo para identificação de ciclos infinitos

Considere o conjunto I de instruções rotuladas compostas abaixo:

Page 39: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Algoritmo para identificação de ciclos infinitos

A correspondente cadeia finita de conjuntos é como se segue:

A0 = {} A1 = {6, } A2 = {5, 6, } A3 = {3, 4, 5, 6, } A4 = {1, 2, 3, 4, 5, 6, } A5 = {1, 2, 3, 4, 5, 6, }

Portanto: lim Ak = {1, 2, 3, 4, 5, 6, } ( IR , 7) = (I, ω), pois 7 lim Ak

Page 40: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Algoritmo de simplificação de de ciclos infinitos

Seja I um conjunto finito de instruções rotulas compostas1. Determina-se a correspondente cadeia finita de

conjuntos A0A

1...

2. Para qualquer rótulo r de instrução de I tal que r lim A

k, tem-se que:

• a instrução rotulada por r é excluída;• toda referência a pares da forma (F, r) em I é substituída por

(ciclo, ω);

• I = I {ω: (ciclo, ω), (ciclo,ω )}

Page 41: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Simplificação de ciclos infinitos

Considere a correspondente cadeia finita de conjuntos:

A0 = {} A1 = {6, } A2 = {5, 6, } A3 = {3, 4, 5, 6, } A4 = {1, 2, 3, 4, 5, 6, } A5 = {1, 2, 3, 4, 5, 6, }

Portanto: lim Ak = {1, 2, 3, 4, 5, 6, } ( IR , 7) = (I, ω), pois 7 lim Ak

Page 42: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Simplificação de ciclos infinitos

Portanto, pode-se simplificar um conjunto de instruções rotuladas compostas eliminando qualquer instruções de r ≠ ω que determine um ciclo infinito.

1: (G,2), (F,3) 1: (G,2),(F,3)

2: (G,2), (F,3) 2: (G,2), (F,3)

3: (F,4), (G,5) 3: (F,4), (G,5)

4: (F,4), (G,5) 4: (F,4), (G,5)

5: (F,6), (ciclo, ω) 5: (F,6), (ciclo, ω)

6: (parada, ), (G,7) 6: (parada, ), (ciclo, ω)

7: (G,7),(G,7) ω: (ciclo,ω),(ciclo,ω)

ω: (ciclo, ω), (ciclo, ω)

Page 43: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência Forte de Programas Monolíticos

Rótulos consistentes Seja I um conjunto finito de instruções rotuladas

compostas e simplificadas Sejam r e s dois rótulos de instruções de I, ambos

diferentes de .

Page 44: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Rótulos consistentes

Suponha que as instruções rotuladas por r e s são da seguinte forma, respectivamente:

r: (F1, r

1), (F

2, r

2)

s: (G1, s

1), (G

2, s

2)

Então: r e s são consistentes se e somente se:

F1 = G1 e F2 = G2

Page 45: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Rótulos equivalentes fortemente

Seja I um conjunto finito de instruções rotuladas compostas e simplificadas

Sejam r e s dois rótulos de instruções de I Então r e s são rótulos equivalentes

fortemente se e somente se: Ou r= s= ou r e s são ambos diferentes de e consistentes, ou

seja F1 = G

1 e F

2 = G

2

Page 46: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Algoritmo para determinação de rótulos equivalentes fortemente

Seja I um conjunto de n instruções compostas e simplificadas

Sejam r e s dois rótulos de instruções de I Define-se, indutivamente, a seqüência de conjuntos

B0B1... por:

B0 = {(r, s)}

Bk+1

= {(r", s") | r" e s" são rótulos sucessores de r’ e s’,

respectivamente, (r’, s’) B

k e (r", s") B

i , i (0, 1, ..., k)}

Page 47: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Algoritmo para determinação de rótulos equivalentes fortemente

Então B0B

1... é uma seqüência que converge

para o conjunto vazio, e r, s são rótulos equivalentes fortemente se, e somente se, qualquer par de B

k é constituído por rótulos

consistentes.

Page 48: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Algoritmo de verificação da equivalência forte de programas monolíticos

Sejam Q = (IQ, q) e R = (IR, r) dois programas

monolíticos especificados usando instruções rotuladas compostas e simplificados

O Algoritmo de Verificação da Equivalência Forte de Programas Monolíticos Q e R é determinado pelos passos:

Page 49: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Algoritmo de verificação da equivalência forte de programas monolíticos

Passo 1: Sejam Pq = (I, q) e P

r = (I, r) programas

monolíticos onde I é o conjunto resultante da união disjunta de I

Q e I

R, excetuando-se a instrução rotulada ,

se existir, a qual ocorre, no máximo, uma vez em I;

Passo 2: Se q e r são rótulos equivalentes fortemente, então B

0={(q, r)}. Caso contrário, Q e R não são

equivalentes fortemente, e o algoritmo termina.

Page 50: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Algoritmo de verificação da equivalência forte de programas monolíticos

Passo 3: Para k ≥ 0, define-se o conjunto Bk+1

, contendo

somente os pares (q", r") de rótulos sucessores de cada (q', r') B

k, tais que:

q' ≠ r'; q' e r' são ambos diferentes de ; os pares sucessores (q", r") não são elementos de

B0, B1....BK.

Page 51: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Algoritmo de verificação da equivalência forte de programas monolíticos

Passo 4: Dependendo de Bk+1

, tem-se que:

a) Bk+1 = { } : Q e R são equivalentes fortemente, e o

algoritmo termina;

b) ) Bk+1 ≠ { } : se todos os pares de rótulos de Bk+1 são

equivalentes fortemente, então vá para o Passo 3; caso contrário, Q e R não são equivalentes fortemente, e o algoritmo termina.

Page 52: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Exemplo

Considere os programas monolíticos Q e R especificados na forma de fluxogramas. Determine se Q e R são equivalentes fortemente.

Page 53: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Q

1: (G,2),(F,3)2: (G,2),(F,3)3: (F,4),(G,5)4: (F,4),(G,5)5: (F,6), (ciclo, ω)6: (parada, ), (ciclo, ω)ω: (ciclo, ω), (ciclo, ω)

Especificação do Programa P usando instruções rótuladas compostas.

Page 54: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

R 8: (G,9),(F,10)9: (G,9),(F,10)10: (F,10),(G,11)11: (F,12),(F,13)

12: (parada, ), (F,13)13: (F,13),(F,13)

Page 55: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência Forte de Programas Monolíticos

A especificação do programa R usando instruções rotuladas compostas, tem-se:1. Conjunto de instruções rotuladas compostas

2. Identificação de ciclos infinitos

Page 56: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência Forte de Programas Monolíticos

Identificação de ciclos infinitos:A0 = {}

A1 = {12, }

A2 = {11, 12, }

A3 = {10, 11, 12, }

A4 = {8, 9, 10, 11, 12, }

A5 = {8, 9, 10, 11, 12, }

Portanto: lim Ak = {8, 9, 10, 11, 12 , }

( IR , 13) = (I, ω), pois 13 lim Ak

Page 57: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência Forte de Programas Monolíticos

b) A especificação do programa R usando instruções rotuladas compostas, tem-se:1. Conjunto de instruções rotuladas compostas

2. Identificação de ciclos infinitos

3. Simplificação de ciclos infinitos

Page 58: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência Forte de Programas Monolíticos

Simplificação de ciclos infinitos:8: (G,9),(F,10)

9: (G,9),(F,10)

10: (F,10),(G,11)

11: (F,12),(ciclo, ω )

12: (parada, ),(ciclo, ω )

ω: (ciclo, ω ), (ciclo, ω )

8: (G,9),(F,10)9: (G,9),(F,10)10: (F,10),(G,11)11: (F,12),(F,13)

12: (parada, ), (F,13)13: (F,13),(F,13)

Não simplificado!

Page 59: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência Forte de Programas Monolíticos

c) Relativamente à aplicação do algoritmo, tem-se que:

Passo 1: seja a união disjunta dos conjuntos IQ e IR, executando-se a instrução rotulada ω, como segue:

Page 60: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência Forte de Programas Monolíticos

Passo 1:1: (G,2), (F,3)

2: (G,2), (F,3)

3: (F,4), (G,5)

4: (F,4), (G,5)

5: (F,6), (ciclo, ω)

6: (parada, ), (ciclo, ω)

8: (G,9), (F,10)

9: (G,9), (F,10)

10: (F,10), (G,11)

11: (F,12), (ciclo, ω )

12: (parada, ), (ciclo, ω )

ω: (ciclo, ω ), (ciclo, ω )

Page 61: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência Forte de Programas Monolíticos

c) Relativamente à aplicação do algoritmo, tem-se que:

Para verificar se Q ≡ R é suficiente verificar se (I,1) ≡ (I,8).

Page 62: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência Forte de Programas Monolíticos

c) Relativamente à aplicação do algoritmo, tem-se que:

Passo 2: como 1 e 8 são rótulos equivalentes fortemente, então:

B0 = {(1, 8)}

Page 63: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência Forte de Programas Monolíticos

c) Relativamente à aplicação do algoritmo, tem-se que:

Passo 3 e 4: para k ≥ 0, construção de Bk+1 é como

se segue:

B1 = {(2, 9), (3, 10)} pares de rótulos equivalentes fortemente

B2 = {(4, 10), (5, 11)} pares de rótulos equivalentes fortemente

B3 = {(6, 12), (ω, ω)} pares de rótulos equivalentes fortemente

B4 = {(, )} pares de rótulos equivalentes fortemente

B5 = Ø

Page 64: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Equivalência Forte de Programas Monolíticos

c) Relativamente à aplicação do algoritmo, tem-se que:

Logo (I,1) ≡ (I,8) e, portanto Q ≡ R.

Page 65: Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS Fabrício Dias fabriciounipe@ig.com.br UNIPÊ – Centro Universitário de João Pessoa Curso

Dúvidas????