SlideShare uma empresa Scribd logo
Verifica¸˜o de Programas
               ca

        Adolfo Neto (DAINF-UTFPR)
http://www.dainf.ct.utfpr.edu.br/~adolfo



                 November 6, 2012




   Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                      ca
Uma linguagem de programa¸˜o
                         ca




  Sintaxe da linguagem:
      Express˜es Aritm´ticas:
             o         e
      E ::= n|x|(−E )|(E + E )|(E − E )|(E ∗ E )
      Express˜es L´gicas:
             o     o
      B ::= true|false|(!B)|(B&B)|(E < E )|(E == E )|(E ! = E )
      Comandos: C ::= x := E |C ; C |if B{C } else {C }|while B{C }




              Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                 ca
Semˆntica Operacional
   a


      A semˆntica operacional “denota o efeito sobre o estado do
            a
      programa de cada comando da linguagem.”
      Representa¸˜o da execu¸˜o de um comando C :
                ca          ca

                                     C, σ → σ

      onde σ ´ o estado antes da execu¸˜o do comando e σ ´ o
             e                        ca                 e
      estado depois da execu¸˜o do comando C .
                            ca
      “A semˆntica operacional deve denotar os efeitos de todos os
             a
      comandos da linguagem e, para isso, deve ser definida sobre
      todos os comandos e express˜es da linguagem”
                                 o
      Fonte: (SILVA; FINGER; MELO, 2006, p.189).



              Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                 ca
Regras da Semˆntica Operacional
             a




   Exemplo de regra (ex. 7.2.1 de (SILVA; FINGER; MELO, 2006,
   p.189)) – Atrib-Operacional:

                                 E, σ → m
                            x := E , σ → σ[m/x]




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Exemplo




  Exemplo 7.2.2 (SILVA; FINGER; MELO, 2006, p.190).
  ´
  E preciso definir a semˆntica operacional de todas as express˜es
                          a                                   o
  aritm´ticas e l´gicas, al´m dos comandos.
       e         o         e




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Mais sobre a Semˆntica Operacional
                a

   De (SILVA; FINGER; MELO, 2006, p.191):
       A semˆntica operacional n˜o faz uma representa¸˜o expl´
             a                   a                    ca      ıcita
       entre asser¸˜es que denotam as pr´ e p´s-condi¸˜es dos
                  co                    e    o       co
       programas.
        ϕ Prog ψ (tripla de Hoare)
       Corre¸˜o parcial: para todo estado σ que satisfaz ϕ, se a
            ca
       execu¸˜o de Prog a partir do estado σ termina, produzindo
            ca
       um estado σ , ent˜o σ satisfaz ψ.
                         a
       Queremos um sistema (c´lculo) de provas para provar a
                               a
       validade da asser¸˜o “ ϕ Prog ψ ”:
                        ca

                                           ϕ Prog ψ



               Adolfo Neto (DAINF-UTFPR)     Verifica¸˜o de Programas
                                                    ca
Mais sobre a Semˆntica Operacional
                a

   De (SILVA; FINGER; MELO, 2006, p.192):
       As precondi¸˜es ϕ s˜o propriedades sobre o estado inicial do
                  co      a
       programa Prog.
       Podemos ter um estado σ que satisfa¸a a asser¸˜o ϕ:
                                          c         ca

                                           σ     ϕ

       Portanto, ap´s a execu¸˜o de Prog sobre o estado σ, um
                   o         ca
       estado σ ´ produzido. E σ satisfaz ψ:
                 e

                              σ     ϕ → Prog           σ     ψ

       onde Prog termina se executado sobre um estado que satisfaz
       ϕ e Prog σ representa o estado produzido por Prog ap´s sua
                                                           o
       execu¸˜o sobre o estado σ.
            ca

               Adolfo Neto (DAINF-UTFPR)       Verifica¸˜o de Programas
                                                      ca
Mais sobre a Semˆntica Operacional
                a


   De (SILVA; FINGER; MELO, 2006, p.192):
       A asser¸˜o
              ca     ϕ Prog ψ deve ser v´lida para TODOS os
                                        a
       estados que satisfazem ϕ:

                          ∀σ(σ       ϕ) → Prog        σ     ψ

       Assumimos que Prog termina quando executado sobre os
       estados σ. Na pr´tica temos programas que n˜o param.
                       a                           a
       As provas de programas podem ser divididas em:
           provas quando assumimos que o programa p´ra; e
                                                    a
           provas que tem como tarefa tamb´m provar a termina¸˜o do
                                          e                  ca
           programa.




              Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                 ca
Mais sobre a Semˆntica Operacional: Corre¸˜o Parcial
                a                        ca


   De (SILVA; FINGER; MELO, 2006, p.192), def. 7.3.1:
       Corre¸˜o parcial: A tripla
            ca

                                       ϕ Prog ψ

       ´ satisfeita sob corre¸˜o parcial se, para todos os estados que
       e                     ca
       satisfazem ϕ, o estado resultante da execu¸˜o do programa
                                                    ca
       Prog satisfaz a p´s-condi¸˜o ψ, se Prog termina.
                         o       ca
       Nesse caso,   par   ´ a rela¸˜o de satisfazibilidade para corre¸˜o
                           e       ca                                 ca
       parcial:
                                     par   ϕ Prog ψ




               Adolfo Neto (DAINF-UTFPR)    Verifica¸˜o de Programas
                                                   ca
Mais sobre a Semˆntica Operacional: Corre¸˜o Parcial
                a                        ca



   De (SILVA; FINGER; MELO, 2006, p.192), def. 7.3.1:
       Corre¸˜o parcial ´ um requisito ineficiente, na pr´tica, porque
            ca          e                               a
       n˜o garante a termina¸˜o do programa.
        a                   ca
       Qualquer programa que n˜o termina satisfaz a sua
                              a
       especifica¸˜o.
                ca
       Na outra no¸˜o de corre¸˜o (corre¸˜o total), a
                     ca         ca       ca
       satisfazibilidade, bem como a termina¸˜o do programa, deve
                                            ca
       ser provada.




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Mais sobre a Semˆntica Operacional: Corre¸˜o Total
                a                        ca


   De (SILVA; FINGER; MELO, 2006, p.193), def. 7.3.2:
       Corre¸˜o total: A tripla
            ca

                                       ϕ Prog ψ

       ´ satisfeita sob corre¸˜o total se, para todos os estados que
       e                     ca
       satisfazem ϕ, o estado resultante da execu¸˜o do programa
                                                    ca
       Prog satisfaz a p´s-condi¸˜o ψ e Prog termina.
                         o       ca
       Nesse caso,   tot   ´ a rela¸˜o de satisfazibilidade para corre¸˜o
                           e       ca                                 ca
       total:
                                     tot   ϕ Prog ψ




               Adolfo Neto (DAINF-UTFPR)    Verifica¸˜o de Programas
                                                   ca
Mais sobre a Semˆntica Operacional: Corre¸˜o Total
                a                        ca




   De (SILVA; FINGER; MELO, 2006, p.193):
       Qualque programa que entra em um la¸o infinito de repeti¸˜o
                                              c                  ca
       n˜o satisfaz sua especifica¸˜o sob a rela¸˜o de corre¸˜o total.
        a                        ca             ca         ca
       Essa rela¸˜o ´ muito mais util na pr´tica.
                ca e              ´        a
       Provar corre¸˜o total de programas pode ser dividido em:
                   ca
        1. provar corre¸˜o parcial
                       ca
        2. provar que o programa termina




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Exemplos




  Demonstra¸˜es informais:
           co
      Exemplo 7.3.1 (SILVA; FINGER; MELO, 2006, p.193).
      Exemplo 7.3.2 (SILVA; FINGER; MELO, 2006, p.194-195).




              Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                 ca
Corre¸˜o Parcial de Programas
     ca

       O sistema de provas prova ´ definido sobre cada elemento
                                 e
       sint´tico da linguagem
           a
       As provas s˜o realizadas usando indu¸˜o sobre as estruturas
                  a                        ca
       dos programas
       Ou seja, as regras provam a corre¸˜o de uma asser¸˜o para
                                        ca              ca
       um comando mais complexo pela prova de corre¸˜o das
                                                     ca
       asser¸˜es de seus subcomandos.
            co
       Devemos distinguir dois elementos no sistema de provas:
        1. as regras de inferˆncia sobre cada um dos elementos sint´ticos
                             e                                     a
           dos programas
        2. o mecanismo de prova usando as regras definidas
       As regras s˜o chamadas regras de Hoare. O conjunto das
                  a
       regras forma a l´gica de Hoare.
                       o
   Fonte: (SILVA; FINGER; MELO, 2006, p.195).

               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Regras da Semˆntica Operacional
             a




   Composi¸˜o:
          ca
                             ϕ C1 η        η C2 ψ
                                 ϕ C 1; C 2 ψ




                 Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                    ca
Regras da Semˆntica Operacional
             a




   Atribui¸˜o:
          ca

                                ψ[E /x] x := E ψ
   A propriedade a ser satisfeita antes da atribui¸˜o ´ a pr´pria ψ com
                                                  ca e      o
   todas as ocorrˆncias de x substitu´
                 e                    ıdas pela express˜o E , ψ[E /x].
                                                       a




                 Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                    ca
Regras da Semˆntica Operacional
             a




   IfElse:
                 φ ∧ B C1 ψ        φ ∧ ¬B C 2 ψ
                     φ if B{C 1}else {C 2} ψ




             Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                ca
Regras da Semˆntica Operacional
             a




   WhileParcial:
                                    η∧B C η
                               η while B{C } η ∧ ¬B
   Obs.: η ´ um invariante que deve ser satisfeito antes e depois de o
           e
   comando C ser executado.




                   Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                      ca
Regras da Semˆntica Operacional
             a


   Implica¸˜o:
          ca

                      ϕ →ϕ              ϕC ψ                ψ→ψ
                                        ϕ C ψ

   Observa¸˜es:
          co
       Esta regra faz a conex˜o entre as provas que podemos ter na
                              a
       l´gica de predicados, usada na especifica¸˜o dos problemas,
        o                                      ca
       com a l´gica de programas aqui apresentada.
               o
       Isto nos permite considerar as provas na l´gica de predicados
                                                 o
       como parte das provas de programas
       Estabelece o elo de liga¸˜o entre especifica¸˜o e programas
                               ca                 ca



                  Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                     ca
Regras da Semˆntica Operacional
             a




           E, σ → m                             ϕ C1 η        η C2 ψ
      x := E , σ → σ[m/x]                           ϕ C 1; C 2 ψ

                                          φ ∧ B C1 ψ        φ ∧ ¬B C 2 ψ
       ψ[E /x] x := E ψ                       φ if B{C 1}else {C 2} ψ

          η∧B C η                         ϕ →ϕ            ϕC ψ         ψ→ψ
     η while B{C } η ∧ ¬B                                 ϕ C ψ




              Adolfo Neto (DAINF-UTFPR)    Verifica¸˜o de Programas
                                                  ca
Sistema de Provas

   Provar que o programa P
                                             C0;
                                             C1;
                                             C2;
                                              .
                                              .
                                              .
                                             Cn
   satisfaz a especifica¸˜o
                       ca
                                       Pre: ϕ
                                       Pos: ψ
                                     par ϕ P ψ


   corresponde a . . .


                 Adolfo Neto (DAINF-UTFPR)         Verifica¸˜o de Programas
                                                          ca
Sistema de Provas

   Provar cada um dos comandos para as suas pr´ e p´s-condi¸˜es
                                              e    o       co
   individuais
                                            ϕ
                                           C0;
                                           ϕ1
                                           C1;
                                           ϕ2
                                            .
                                            .
                                            .
                                           ϕn
                                           Cn
                                           ψ

   O que corresponde a . . . Fonte: (SILVA; FINGER; MELO, 2006,
   p.199).

               Adolfo Neto (DAINF-UTFPR)         Verifica¸˜o de Programas
                                                        ca
Sistema de Provas




   O que corresponde a

                                 par   ϕ C0 ϕ1
                                par    ϕ1 C1 ϕ2
                                         .
                                         .
                                         .
                                 par   ϕ n Cn ψ

   Fonte: (SILVA; FINGER; MELO, 2006, p.200).




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Sistema de Provas



       A regra a ser aplicada para provar cada comando ´ detectada
                                                       e
       pela pr´pria sintaxe do comando: se ´ uma Atribui¸˜o, um
               o                            e           ca
       IfElse, etc.
       Mas aqui foram introduzidas asser¸˜es intermedi´rias entre os
                                        co            a
       comandos. Como encontrar tais asser¸˜es quando temos
                                           co
       apenas a especifica¸˜o das pr´ (ϕ) e p´s-condi¸˜es (ψ) do
                         ca        e        o       co
       problema?
       Exemplo 7.4.1 (SILVA; FINGER; MELO, 2006, p.200-201)
   Fonte: (SILVA; FINGER; MELO, 2006, p.200-201).




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Sistema de Provas



       Mas aqui foram introduzidas asser¸˜es intermedi´rias entre os
                                        co            a
       comandos. Como encontrar tais asser¸˜es quando temos
                                           co
       apenas a especifica¸˜o das pr´ (ϕ) e p´s-condi¸˜es (ψ) do
                         ca        e        o       co
       problema?
       Olhamos o que queremos provar para, ent˜o, introduzir
                                                  a
       asser¸˜es intermedi´rias para verificar se a premissa ´
            co            a                                 e
       suficiente para provar a asser¸˜o do topo do programa.
                                    ca
   Fonte: (SILVA; FINGER; MELO, 2006, p.201).




               Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                  ca
Pr´ximos Passos
  o




      Tablˆ de provas
          o
      Exemplos de provas
      Corre¸˜o e completude do sistema de provas
           ca
      Corre¸˜o total de programas
           ca
      Notas bibliogr´ficas
                    a




              Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                 ca
Referˆncias
     e




      SILVA, Fl´vio S. C. da; FINGER, Marcelo; MELO, Ana C. V.
               a
      de. L´gica para Computa¸˜o. S˜o Paulo: Thomson
           o                     ca   a
      Learning, 2006.




              Adolfo Neto (DAINF-UTFPR)   Verifica¸˜o de Programas
                                                 ca

Mais conteúdo relacionado

Mais de Adolfo Neto

Encontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
Encontros de Usuários e Entusiastas de Métodos Ágeis no BrasilEncontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
Encontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
Adolfo Neto
 
Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em Elixir
Adolfo Neto
 
Coding Dojo - Unreal Engine - Sobre Unreal
Coding Dojo - Unreal Engine - Sobre UnrealCoding Dojo - Unreal Engine - Sobre Unreal
Coding Dojo - Unreal Engine - Sobre Unreal
Adolfo Neto
 
Coding Dojo - Unreal Engine
Coding Dojo - Unreal EngineCoding Dojo - Unreal Engine
Coding Dojo - Unreal Engine
Adolfo Neto
 
Preocupações e Limitações no Desenvolvimento Ágil de Software: Um Levantame...
Preocupações e Limitações no Desenvolvimento  Ágil de Software:  Um Levantame...Preocupações e Limitações no Desenvolvimento  Ágil de Software:  Um Levantame...
Preocupações e Limitações no Desenvolvimento Ágil de Software: Um Levantame...
Adolfo Neto
 
Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em Elixir
Adolfo Neto
 
Kanban
KanbanKanban
Kanban
Adolfo Neto
 
How do software developers learn new tricks
How do software developers learn new tricksHow do software developers learn new tricks
How do software developers learn new tricks
Adolfo Neto
 
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
Adolfo Neto
 
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Adolfo Neto
 
Cholesterol is not an important risk factor for heart disease and current die...
Cholesterol is not an important risk factor for heart disease and current die...Cholesterol is not an important risk factor for heart disease and current die...
Cholesterol is not an important risk factor for heart disease and current die...
Adolfo Neto
 
Quem foi Alan Turing?
Quem foi Alan Turing?Quem foi Alan Turing?
Quem foi Alan Turing?
Adolfo Neto
 
O método maffetone
O método maffetoneO método maffetone
O método maffetone
Adolfo Neto
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Adolfo Neto
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
Adolfo Neto
 
Apresentacao PPGCA
Apresentacao PPGCAApresentacao PPGCA
Apresentacao PPGCA
Adolfo Neto
 
Introducao a Logica
Introducao a LogicaIntroducao a Logica
Introducao a Logica
Adolfo Neto
 
Logica Proposicional
Logica ProposicionalLogica Proposicional
Logica Proposicional
Adolfo Neto
 
Bacharelado em Sistemas de Informacao da UTFPR - Campus Curitiba
Bacharelado em Sistemas de Informacao da UTFPR - Campus CuritibaBacharelado em Sistemas de Informacao da UTFPR - Campus Curitiba
Bacharelado em Sistemas de Informacao da UTFPR - Campus Curitiba
Adolfo Neto
 
Metodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de SoftwareMetodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de Software
Adolfo Neto
 

Mais de Adolfo Neto (20)

Encontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
Encontros de Usuários e Entusiastas de Métodos Ágeis no BrasilEncontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
Encontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
 
Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em Elixir
 
Coding Dojo - Unreal Engine - Sobre Unreal
Coding Dojo - Unreal Engine - Sobre UnrealCoding Dojo - Unreal Engine - Sobre Unreal
Coding Dojo - Unreal Engine - Sobre Unreal
 
Coding Dojo - Unreal Engine
Coding Dojo - Unreal EngineCoding Dojo - Unreal Engine
Coding Dojo - Unreal Engine
 
Preocupações e Limitações no Desenvolvimento Ágil de Software: Um Levantame...
Preocupações e Limitações no Desenvolvimento  Ágil de Software:  Um Levantame...Preocupações e Limitações no Desenvolvimento  Ágil de Software:  Um Levantame...
Preocupações e Limitações no Desenvolvimento Ágil de Software: Um Levantame...
 
Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em Elixir
 
Kanban
KanbanKanban
Kanban
 
How do software developers learn new tricks
How do software developers learn new tricksHow do software developers learn new tricks
How do software developers learn new tricks
 
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
 
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
 
Cholesterol is not an important risk factor for heart disease and current die...
Cholesterol is not an important risk factor for heart disease and current die...Cholesterol is not an important risk factor for heart disease and current die...
Cholesterol is not an important risk factor for heart disease and current die...
 
Quem foi Alan Turing?
Quem foi Alan Turing?Quem foi Alan Turing?
Quem foi Alan Turing?
 
O método maffetone
O método maffetoneO método maffetone
O método maffetone
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
 
Apresentacao PPGCA
Apresentacao PPGCAApresentacao PPGCA
Apresentacao PPGCA
 
Introducao a Logica
Introducao a LogicaIntroducao a Logica
Introducao a Logica
 
Logica Proposicional
Logica ProposicionalLogica Proposicional
Logica Proposicional
 
Bacharelado em Sistemas de Informacao da UTFPR - Campus Curitiba
Bacharelado em Sistemas de Informacao da UTFPR - Campus CuritibaBacharelado em Sistemas de Informacao da UTFPR - Campus Curitiba
Bacharelado em Sistemas de Informacao da UTFPR - Campus Curitiba
 
Metodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de SoftwareMetodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de Software
 

Último

Caça-palavras ortografia M antes de P e B.
Caça-palavras    ortografia M antes de P e B.Caça-palavras    ortografia M antes de P e B.
Caça-palavras ortografia M antes de P e B.
Mary Alvarenga
 
o que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sulo que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sul
CarlaInsStaub
 
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptxMÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
Martin M Flynn
 
iNTRODUÇÃO À Plantas terrestres e Plantas aquáticas. (1).pdf
iNTRODUÇÃO À Plantas terrestres e Plantas aquáticas. (1).pdfiNTRODUÇÃO À Plantas terrestres e Plantas aquáticas. (1).pdf
iNTRODUÇÃO À Plantas terrestres e Plantas aquáticas. (1).pdf
andressacastro36
 
Apresentação_Primeira_Guerra_Mundial 9 ANO-1.pptx
Apresentação_Primeira_Guerra_Mundial 9 ANO-1.pptxApresentação_Primeira_Guerra_Mundial 9 ANO-1.pptx
Apresentação_Primeira_Guerra_Mundial 9 ANO-1.pptx
JulianeMelo17
 
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptxHISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
WALTERDECARVALHOBRAG
 
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptxSlides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
LuizHenriquedeAlmeid6
 
Roteiro para análise do Livro Didático .pptx
Roteiro para análise do Livro Didático .pptxRoteiro para análise do Livro Didático .pptx
Roteiro para análise do Livro Didático .pptx
pamellaaraujo10
 
Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.
RafaelNeves651350
 
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de CarvalhoO sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
analuisasesso
 
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxSlides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
LuizHenriquedeAlmeid6
 
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdfEJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
Escola Municipal Jesus Cristo
 
O autismo me ensinou - Letícia Butterfield.pdf
O autismo me ensinou - Letícia Butterfield.pdfO autismo me ensinou - Letícia Butterfield.pdf
O autismo me ensinou - Letícia Butterfield.pdf
Letícia Butterfield
 
Aula01 - ensino médio - (Filosofia).pptx
Aula01 - ensino médio - (Filosofia).pptxAula01 - ensino médio - (Filosofia).pptx
Aula01 - ensino médio - (Filosofia).pptx
kdn15710
 
Sinais de pontuação
Sinais de pontuaçãoSinais de pontuação
Sinais de pontuação
Mary Alvarenga
 
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
PROPOSTA CURRICULAR  EDUCACAO FISICA.docxPROPOSTA CURRICULAR  EDUCACAO FISICA.docx
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
Escola Municipal Jesus Cristo
 
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdfCaderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
enpfilosofiaufu
 
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
"Está o lascivo e   doce passarinho " de Luís Vaz de Camões"Está o lascivo e   doce passarinho " de Luís Vaz de Camões
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
goncalopecurto
 
Fato X Opinião (Língua Portuguesa 9º Ano).pptx
Fato X Opinião (Língua Portuguesa 9º Ano).pptxFato X Opinião (Língua Portuguesa 9º Ano).pptx
Fato X Opinião (Língua Portuguesa 9º Ano).pptx
MariaFatima425285
 
Caça-palavras - ortografia S, SS, X, C e Z
Caça-palavras - ortografia  S, SS, X, C e ZCaça-palavras - ortografia  S, SS, X, C e Z
Caça-palavras - ortografia S, SS, X, C e Z
Mary Alvarenga
 

Último (20)

Caça-palavras ortografia M antes de P e B.
Caça-palavras    ortografia M antes de P e B.Caça-palavras    ortografia M antes de P e B.
Caça-palavras ortografia M antes de P e B.
 
o que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sulo que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sul
 
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptxMÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
 
iNTRODUÇÃO À Plantas terrestres e Plantas aquáticas. (1).pdf
iNTRODUÇÃO À Plantas terrestres e Plantas aquáticas. (1).pdfiNTRODUÇÃO À Plantas terrestres e Plantas aquáticas. (1).pdf
iNTRODUÇÃO À Plantas terrestres e Plantas aquáticas. (1).pdf
 
Apresentação_Primeira_Guerra_Mundial 9 ANO-1.pptx
Apresentação_Primeira_Guerra_Mundial 9 ANO-1.pptxApresentação_Primeira_Guerra_Mundial 9 ANO-1.pptx
Apresentação_Primeira_Guerra_Mundial 9 ANO-1.pptx
 
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptxHISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
 
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptxSlides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
 
Roteiro para análise do Livro Didático .pptx
Roteiro para análise do Livro Didático .pptxRoteiro para análise do Livro Didático .pptx
Roteiro para análise do Livro Didático .pptx
 
Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.
 
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de CarvalhoO sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
 
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxSlides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
 
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdfEJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
 
O autismo me ensinou - Letícia Butterfield.pdf
O autismo me ensinou - Letícia Butterfield.pdfO autismo me ensinou - Letícia Butterfield.pdf
O autismo me ensinou - Letícia Butterfield.pdf
 
Aula01 - ensino médio - (Filosofia).pptx
Aula01 - ensino médio - (Filosofia).pptxAula01 - ensino médio - (Filosofia).pptx
Aula01 - ensino médio - (Filosofia).pptx
 
Sinais de pontuação
Sinais de pontuaçãoSinais de pontuação
Sinais de pontuação
 
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
PROPOSTA CURRICULAR  EDUCACAO FISICA.docxPROPOSTA CURRICULAR  EDUCACAO FISICA.docx
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
 
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdfCaderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
 
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
"Está o lascivo e   doce passarinho " de Luís Vaz de Camões"Está o lascivo e   doce passarinho " de Luís Vaz de Camões
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
 
Fato X Opinião (Língua Portuguesa 9º Ano).pptx
Fato X Opinião (Língua Portuguesa 9º Ano).pptxFato X Opinião (Língua Portuguesa 9º Ano).pptx
Fato X Opinião (Língua Portuguesa 9º Ano).pptx
 
Caça-palavras - ortografia S, SS, X, C e Z
Caça-palavras - ortografia  S, SS, X, C e ZCaça-palavras - ortografia  S, SS, X, C e Z
Caça-palavras - ortografia S, SS, X, C e Z
 

Verificação de Programas

  • 1. Verifica¸˜o de Programas ca Adolfo Neto (DAINF-UTFPR) http://www.dainf.ct.utfpr.edu.br/~adolfo November 6, 2012 Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 2. Uma linguagem de programa¸˜o ca Sintaxe da linguagem: Express˜es Aritm´ticas: o e E ::= n|x|(−E )|(E + E )|(E − E )|(E ∗ E ) Express˜es L´gicas: o o B ::= true|false|(!B)|(B&B)|(E < E )|(E == E )|(E ! = E ) Comandos: C ::= x := E |C ; C |if B{C } else {C }|while B{C } Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 3. Semˆntica Operacional a A semˆntica operacional “denota o efeito sobre o estado do a programa de cada comando da linguagem.” Representa¸˜o da execu¸˜o de um comando C : ca ca C, σ → σ onde σ ´ o estado antes da execu¸˜o do comando e σ ´ o e ca e estado depois da execu¸˜o do comando C . ca “A semˆntica operacional deve denotar os efeitos de todos os a comandos da linguagem e, para isso, deve ser definida sobre todos os comandos e express˜es da linguagem” o Fonte: (SILVA; FINGER; MELO, 2006, p.189). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 4. Regras da Semˆntica Operacional a Exemplo de regra (ex. 7.2.1 de (SILVA; FINGER; MELO, 2006, p.189)) – Atrib-Operacional: E, σ → m x := E , σ → σ[m/x] Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 5. Exemplo Exemplo 7.2.2 (SILVA; FINGER; MELO, 2006, p.190). ´ E preciso definir a semˆntica operacional de todas as express˜es a o aritm´ticas e l´gicas, al´m dos comandos. e o e Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 6. Mais sobre a Semˆntica Operacional a De (SILVA; FINGER; MELO, 2006, p.191): A semˆntica operacional n˜o faz uma representa¸˜o expl´ a a ca ıcita entre asser¸˜es que denotam as pr´ e p´s-condi¸˜es dos co e o co programas. ϕ Prog ψ (tripla de Hoare) Corre¸˜o parcial: para todo estado σ que satisfaz ϕ, se a ca execu¸˜o de Prog a partir do estado σ termina, produzindo ca um estado σ , ent˜o σ satisfaz ψ. a Queremos um sistema (c´lculo) de provas para provar a a validade da asser¸˜o “ ϕ Prog ψ ”: ca ϕ Prog ψ Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 7. Mais sobre a Semˆntica Operacional a De (SILVA; FINGER; MELO, 2006, p.192): As precondi¸˜es ϕ s˜o propriedades sobre o estado inicial do co a programa Prog. Podemos ter um estado σ que satisfa¸a a asser¸˜o ϕ: c ca σ ϕ Portanto, ap´s a execu¸˜o de Prog sobre o estado σ, um o ca estado σ ´ produzido. E σ satisfaz ψ: e σ ϕ → Prog σ ψ onde Prog termina se executado sobre um estado que satisfaz ϕ e Prog σ representa o estado produzido por Prog ap´s sua o execu¸˜o sobre o estado σ. ca Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 8. Mais sobre a Semˆntica Operacional a De (SILVA; FINGER; MELO, 2006, p.192): A asser¸˜o ca ϕ Prog ψ deve ser v´lida para TODOS os a estados que satisfazem ϕ: ∀σ(σ ϕ) → Prog σ ψ Assumimos que Prog termina quando executado sobre os estados σ. Na pr´tica temos programas que n˜o param. a a As provas de programas podem ser divididas em: provas quando assumimos que o programa p´ra; e a provas que tem como tarefa tamb´m provar a termina¸˜o do e ca programa. Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 9. Mais sobre a Semˆntica Operacional: Corre¸˜o Parcial a ca De (SILVA; FINGER; MELO, 2006, p.192), def. 7.3.1: Corre¸˜o parcial: A tripla ca ϕ Prog ψ ´ satisfeita sob corre¸˜o parcial se, para todos os estados que e ca satisfazem ϕ, o estado resultante da execu¸˜o do programa ca Prog satisfaz a p´s-condi¸˜o ψ, se Prog termina. o ca Nesse caso, par ´ a rela¸˜o de satisfazibilidade para corre¸˜o e ca ca parcial: par ϕ Prog ψ Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 10. Mais sobre a Semˆntica Operacional: Corre¸˜o Parcial a ca De (SILVA; FINGER; MELO, 2006, p.192), def. 7.3.1: Corre¸˜o parcial ´ um requisito ineficiente, na pr´tica, porque ca e a n˜o garante a termina¸˜o do programa. a ca Qualquer programa que n˜o termina satisfaz a sua a especifica¸˜o. ca Na outra no¸˜o de corre¸˜o (corre¸˜o total), a ca ca ca satisfazibilidade, bem como a termina¸˜o do programa, deve ca ser provada. Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 11. Mais sobre a Semˆntica Operacional: Corre¸˜o Total a ca De (SILVA; FINGER; MELO, 2006, p.193), def. 7.3.2: Corre¸˜o total: A tripla ca ϕ Prog ψ ´ satisfeita sob corre¸˜o total se, para todos os estados que e ca satisfazem ϕ, o estado resultante da execu¸˜o do programa ca Prog satisfaz a p´s-condi¸˜o ψ e Prog termina. o ca Nesse caso, tot ´ a rela¸˜o de satisfazibilidade para corre¸˜o e ca ca total: tot ϕ Prog ψ Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 12. Mais sobre a Semˆntica Operacional: Corre¸˜o Total a ca De (SILVA; FINGER; MELO, 2006, p.193): Qualque programa que entra em um la¸o infinito de repeti¸˜o c ca n˜o satisfaz sua especifica¸˜o sob a rela¸˜o de corre¸˜o total. a ca ca ca Essa rela¸˜o ´ muito mais util na pr´tica. ca e ´ a Provar corre¸˜o total de programas pode ser dividido em: ca 1. provar corre¸˜o parcial ca 2. provar que o programa termina Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 13. Exemplos Demonstra¸˜es informais: co Exemplo 7.3.1 (SILVA; FINGER; MELO, 2006, p.193). Exemplo 7.3.2 (SILVA; FINGER; MELO, 2006, p.194-195). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 14. Corre¸˜o Parcial de Programas ca O sistema de provas prova ´ definido sobre cada elemento e sint´tico da linguagem a As provas s˜o realizadas usando indu¸˜o sobre as estruturas a ca dos programas Ou seja, as regras provam a corre¸˜o de uma asser¸˜o para ca ca um comando mais complexo pela prova de corre¸˜o das ca asser¸˜es de seus subcomandos. co Devemos distinguir dois elementos no sistema de provas: 1. as regras de inferˆncia sobre cada um dos elementos sint´ticos e a dos programas 2. o mecanismo de prova usando as regras definidas As regras s˜o chamadas regras de Hoare. O conjunto das a regras forma a l´gica de Hoare. o Fonte: (SILVA; FINGER; MELO, 2006, p.195). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 15. Regras da Semˆntica Operacional a Composi¸˜o: ca ϕ C1 η η C2 ψ ϕ C 1; C 2 ψ Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 16. Regras da Semˆntica Operacional a Atribui¸˜o: ca ψ[E /x] x := E ψ A propriedade a ser satisfeita antes da atribui¸˜o ´ a pr´pria ψ com ca e o todas as ocorrˆncias de x substitu´ e ıdas pela express˜o E , ψ[E /x]. a Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 17. Regras da Semˆntica Operacional a IfElse: φ ∧ B C1 ψ φ ∧ ¬B C 2 ψ φ if B{C 1}else {C 2} ψ Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 18. Regras da Semˆntica Operacional a WhileParcial: η∧B C η η while B{C } η ∧ ¬B Obs.: η ´ um invariante que deve ser satisfeito antes e depois de o e comando C ser executado. Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 19. Regras da Semˆntica Operacional a Implica¸˜o: ca ϕ →ϕ ϕC ψ ψ→ψ ϕ C ψ Observa¸˜es: co Esta regra faz a conex˜o entre as provas que podemos ter na a l´gica de predicados, usada na especifica¸˜o dos problemas, o ca com a l´gica de programas aqui apresentada. o Isto nos permite considerar as provas na l´gica de predicados o como parte das provas de programas Estabelece o elo de liga¸˜o entre especifica¸˜o e programas ca ca Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 20. Regras da Semˆntica Operacional a E, σ → m ϕ C1 η η C2 ψ x := E , σ → σ[m/x] ϕ C 1; C 2 ψ φ ∧ B C1 ψ φ ∧ ¬B C 2 ψ ψ[E /x] x := E ψ φ if B{C 1}else {C 2} ψ η∧B C η ϕ →ϕ ϕC ψ ψ→ψ η while B{C } η ∧ ¬B ϕ C ψ Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 21. Sistema de Provas Provar que o programa P C0; C1; C2; . . . Cn satisfaz a especifica¸˜o ca Pre: ϕ Pos: ψ par ϕ P ψ corresponde a . . . Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 22. Sistema de Provas Provar cada um dos comandos para as suas pr´ e p´s-condi¸˜es e o co individuais ϕ C0; ϕ1 C1; ϕ2 . . . ϕn Cn ψ O que corresponde a . . . Fonte: (SILVA; FINGER; MELO, 2006, p.199). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 23. Sistema de Provas O que corresponde a par ϕ C0 ϕ1 par ϕ1 C1 ϕ2 . . . par ϕ n Cn ψ Fonte: (SILVA; FINGER; MELO, 2006, p.200). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 24. Sistema de Provas A regra a ser aplicada para provar cada comando ´ detectada e pela pr´pria sintaxe do comando: se ´ uma Atribui¸˜o, um o e ca IfElse, etc. Mas aqui foram introduzidas asser¸˜es intermedi´rias entre os co a comandos. Como encontrar tais asser¸˜es quando temos co apenas a especifica¸˜o das pr´ (ϕ) e p´s-condi¸˜es (ψ) do ca e o co problema? Exemplo 7.4.1 (SILVA; FINGER; MELO, 2006, p.200-201) Fonte: (SILVA; FINGER; MELO, 2006, p.200-201). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 25. Sistema de Provas Mas aqui foram introduzidas asser¸˜es intermedi´rias entre os co a comandos. Como encontrar tais asser¸˜es quando temos co apenas a especifica¸˜o das pr´ (ϕ) e p´s-condi¸˜es (ψ) do ca e o co problema? Olhamos o que queremos provar para, ent˜o, introduzir a asser¸˜es intermedi´rias para verificar se a premissa ´ co a e suficiente para provar a asser¸˜o do topo do programa. ca Fonte: (SILVA; FINGER; MELO, 2006, p.201). Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 26. Pr´ximos Passos o Tablˆ de provas o Exemplos de provas Corre¸˜o e completude do sistema de provas ca Corre¸˜o total de programas ca Notas bibliogr´ficas a Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca
  • 27. Referˆncias e SILVA, Fl´vio S. C. da; FINGER, Marcelo; MELO, Ana C. V. a de. L´gica para Computa¸˜o. S˜o Paulo: Thomson o ca a Learning, 2006. Adolfo Neto (DAINF-UTFPR) Verifica¸˜o de Programas ca