A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Calculo de Hoare Daniel Soares, Gabriel Alabarse Hernandez(150756) e Vanius Zapalowski(150843)

Apresentações semelhantes


Apresentação em tema: "Calculo de Hoare Daniel Soares, Gabriel Alabarse Hernandez(150756) e Vanius Zapalowski(150843)"— Transcrição da apresentação:

1 Calculo de Hoare Daniel Soares, Gabriel Alabarse Hernandez(150756) e Vanius Zapalowski(150843)

2 Introdução A Semântica axiomática usada no cálculo de Hoare é embasada em métodos da dedução da lógica predicativa, a qual fornece uma sustentação lógica para as propriedades dos programas. A Semântica axiomática possui dois marcos iniciais: um artigo escrito por Robert Floyd e um ponto de vista diferente ao de Floyd por C.A.R. Hoare, é, obviamente, mais abstrata que outras semânticas, contudo, seu significado semântico é o mesmo para todas as semânticas. Assim, podemos nos valer de uma semântica mais “humana” e menos de máquina para resoluções do cálculo de Hoare.

3 Idéia Base do Cálculo de Hoare O Cálculo de Hoare consiste em asserções no programa que testam seu valor semântico. Na correção de programas usa-se a lógica predicativa de primeira ordem. Nela, as variáveis individuais correspondem a variáveis do programa e os símbolos funcionais incluem todas as operações que ocorrem nas expressões. O teste de significado é feito incluindo uma asserção antes do comando a ser testado, chamada de pré-condição, e outra após o a execução do comando, chamada pós-condição, conforme abaixo : {P} C {Q} onde P é a pré-condição, C é o comando testado e Q é a pós- condição. Logo, podemos dizer que o significado de C está intimamente ligado ao par, que é chamado de especificação de C. Sobre a correção de C, ela é verdadeira quando os valores de entrada passam por P e geram um verdadeiro para P, C é executado e para, e os valores de saída passam por Q e retornam um valor verdadeiro para Q.

4 Idéia Base do Cálculo de Hoare Assim, o objetivo desse método é obter regras de prova e axiomas que nos forneçam o resultado desse comando, portanto associando axiomas e provas a determinados trechos de programas, que por sua vez podem ser diferentes entre si, porém se tiverem as mesmas provas e axiomas associados serão equivalentes. Então, dado um código C que implementa B e uma otimização do algoritmo C, dita por C’, que implementa o mesmo algoritmo com algumas modificações, porém com as mesmas funções, e dadas asserções iniciais P e finais Q, portanto é válido dizer que: {P} C {Q} = {P} C’ {Q}.

5 Regras do Cálculo de Hoare O Cálculo de Hoare utiliza-se das seguintes regras básicas na analise de algoritmos: Comando SKIP Comando de atribuição Comando If-then-else Comando if-then Comando While Definição de força

6 Comando SKIP Não executa nada, assim não produz nenhum efeito no programa, é representado pelo teorema: ________________ { P } skip { P } Visto que skip não faz nada, sua pré- condição deve ser a mesma que a pós- condição, no caso P.

7 Comando de atribuição o valor de entrada é válido para a pré-condição, após a atribuição, a variável que recebeu o valor deve validar a mesma condição que no inicio, mas agora sendo essa condição a pós-condição e o valor de entrada do predicado a variável que recebeu o valor. Assim, tomando por exemplo V:=Z e P a pré-condição, temos o teorema : ____________________________ {P ( V ) } V := Z { P( Z ) }

8 Comando de atribuição Portanto, isso nos diz que as propriedades que o valor V possuía antes da atribuição, agora também são válidas para Z após a atribuição.

9 Comando If-then-else Comando If-then-else: nesse comando temos dois caminhos a serem provados para uma asserção, então é preciso que ambos os caminhos sejam verdadeiros, porém cada um para seus valores. Assim, tendo como exemplo C’ e C códigos e B um valor que define qual será executado, temos a regra: { P ^ B } C’ { Q } { P ^ ¬B } C { Q } { P } if B then C’ else C fi { Q }. No caso, B é uma expressão booleana nas asserções e no código para verificação do código.

10 Comando if-then Comando if-then : semelhante ao if-then- else, só que no lugar de else usamos skip, assim ele continua como está caso não seja necessário fazer nada. Usando os mesmo exemplos do comando if-then-else temos a regra: { P ^ B } C { Q } P ^ ¬B  Q (5) { P } if B then C fi { Q }.

11 Comando while Seguindo os exemplos anteriores, temos a regra : _______{ P ^ B } C { P }_______ { P } while B do C od { P ^ ¬B } Onde P é chamado invariante de loop, que para n iterações do while ela sempre deverá ser válida.

12 Comando while

13 Definição de força Podemos enfraquecer a pré-condição e a pós- condição de acordo com a necessidade e possibilidade da prova. Exemplos: { P } C { Q } Q  R { P } C { R } Temos o enfraquecimento da pós-condição, pois partindo de Q → R temos por certeza que tendo Q chegaremos em R, assim enfraquecendo a pós-condição para R.

14 Definição de força P  Q { Q } C { R } { P } C { R } Aqui Temos o enfraquecimento da pré- condição, pois partindo de P → Q temos por certeza que qualquer termo que implica Q também é asserção, então enfraquecemos a pré-condição para P.

15 Restrições da Semântica Axiomática Na semântica axiomática como na maioria das semânticas existem limitações que se não respeitadas geram resultados inesperados. Não é permitido o uso de funções, procedimentos, comandos que gerem efeitos colaterais, pois caso eles existam teremos que provar todos eles, e como não são previstos dificulta um pouco a prova de um efeito inesperado. Regras de escopo também são difíceis de serem descritas na semântica axiomática, a não ser que os nomes de escopo sejam únicos para cada código gerado.

16 Conclusão Apesar de suas restrições o cálculo de Hoare é uma técnica que facilita bastante a correção de algoritmos, o desenvolvimento de algoritmos “limpos e livres de bugs” e com semântica esperada e a geração automática de código de programa baseado em especificações de linguagens. Assim sendo, ele é uma ferramenta técnica de grande utilidade para programadores.

17 Bibliografia Juliana Carpes Imperial, “Técnicas para uso do Cálculo de Hoare em PCC”, em http://www2.dbd.puc- rio.br/pergamum/tesesabertas/0124811_03_cap_03.pdf, 2003, cap.3.http://www2.dbd.puc- rio.br/pergamum/tesesabertas/0124811_03_cap_03.pdf http://pt.wikipedia.org/wiki/C.A.R._Hoare Luis Cares, “Tópicos Avançados em Linguagens e Modelos de Programação”, em http://www-ctp.di.fct.unl.pt/~lcaires/talmp/index- second-course.html,2005/2006, Slides Adicionais sobre monitores e Lógica de Hoare.http://www-ctp.di.fct.unl.pt/~lcaires/talmp/index- second-course.html Rosália Rodrigues, “Análise e Desenvolvimento de Algoritmos”, em http://www.mat.ua.pt/rosalia/cadeiras/ADA/, 2006/2007, A Axiomática de Hoare. http://www.mat.ua.pt/rosalia/cadeiras/ADA/ http://en.wikipedia.org/wiki/Hoare_logic


Carregar ppt "Calculo de Hoare Daniel Soares, Gabriel Alabarse Hernandez(150756) e Vanius Zapalowski(150843)"

Apresentações semelhantes


Anúncios Google